使用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