使用faye-websocket和EventMachine的代码看起来非常相似,王菲-的WebSocket的客户端的例子:如何使用Ruby连接到多个WebSockets?
require 'faye/websocket'
require 'eventmachine'
def setup_socket(url)
EM.run {
ws = Faye::WebSocket::Client.new(url)
ws.on :open do ... end
ws.on :message do ... end
ws.on :close do ... end
}
end
我想有多个连接开放平行。我不能简单地多次调用setup_socket
,因为执行不会退出EM.run
子句。我试着在单独的线程运行setup_socket
多次为:
urls.each do |url|
Thread.new { setup_socket(url) }
end
但它似乎并没有做anyhting为puts
语句不到达输出。
我不限制使用faye-websocket,但似乎大多数人使用这个库。如果可能的话,我想避免多线程。我也不想失去进行修改的可能性(例如添加一个新的websocket)。因此,在EM.run
子句内移动URL的迭代不是理想的,而是启动多个EM将会更有益。我以非常干净的方式找到了example for starting multiple servers via EM。我正在寻找类似的东西。
我怎样才能同时连接到多个WebSocket?
为什么不'def setup_sockets(urls); EM.run {urls.each {...}}; end'。这不正常吗? – Casper
这可以工作。我没有考虑到这一点,因为网址会随着时间的推移而变化,或者新的网址会被添加。用这种方法,我不得不重新启动这个过程,并且不能随时进行修改。 – thisismydesign