从方法访问块变量

时间:2017-02-23 00:48:38

标签: ruby

我有一个Websocket服务器(使用Rubame),它以块形式处理服务器连接:

server.run do |client|
    # ...
end

客户端向服务器发送消息(即ping;end),然后服务器发回消息(即pong;end)。

我没有在块中创建反应消息代码,而是创建了一个巨大的,丑陋的混乱,我希望将它放在一个函数中:

def react(msg)
    # ...
end
server.run do |client|
    client.onmessage do |mess|
        react(mess)
    end
end

要将消息发送回客户端,我需要访问传递给client块的server.run变量,并且该方法似乎无法访问该变量。

有没有办法从块内调用的方法中访问块的变量?

1 个答案:

答案 0 :(得分:4)

只需将client传递给您的方法:

def react(client, msg)
  # ...
end

server.run do |client|
  client.onmessage do |mess|
    react(client, mess)
  end
end