Ruby的铸造方法

时间:2014-01-04 18:55:31

标签: ruby

我是ruby开发的新手,我正在制作一个通过TLS加密的简单聊天服务器。

我设法让基本服务器运行但是我现在想要为每个连接的客户端添加特殊属性(用户名等)

我有这个课程,我计划用于连接的每个客户端:

class Client < OpenSSL::SSL::SSLSocket
    attr_accessor :username
    ...
end

我需要从Client函数中获取OpenSSL::SSL::SSLServer.accept对象才能设置username属性。我已经习惯了C类型的语言,但是Google会告诉我在Ruby中不是这种情况。

Ruby的做法是什么?

2 个答案:

答案 0 :(得分:2)

您不需要在Ruby中进行转换。这是一种动态语言。所以重要的是,如果对象知道如何响应消息(方法)。

答案 1 :(得分:0)

基本上有两种方法可以解决您的问题:

  1. 委托:使用类OpenSSL :: SSL :: SSLSocket的实例变量创建Client作为包装器。然后,客户端必须理解并转发消息到SSLSocket。可能会变得复杂。
  2. 扩展名:使用class_eval将实例变量和/或方法直接添加到SSLSocket。这是一种常用的Ruby方法。