使用 eventmachine 设置并发网络套接字

Setup concurrent web sockets with eventmachine

我想使用 websocket-eventmachine-client gem 尝试创建多个并发网络套接字,但我不确定如何去做。

我需要使用 EM.defer 或类似的东西吗?

例如,我有 20 个 URL 需要连接和收听。 要连接到一个我可以做的事情:

EM.run do
  ws = WebSocket::EventMachine::Client.connect(uri: host)

  ws.onopen do
    p :open
  end

  ws.onmessage do |msg, type|
    p [:message, msg]
  end

  ws.onclose do |code, reason|
    p :closed
  end

  ws.onerror do |error|
    p :error
  end
end

执行 20 次的代码是什么?到目前为止,我只设法获得串行连接。

最后我做了:

EM.run do
  EM::Iterator.new(connections_list, connections_list.size).each do |conn, iterator|
    # Connection stuff as in question
  end
end