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
私は複数の接続オープン並列を持っているしたいと思います。実行がEM.run
節を終了しないので、私は単にsetup_socket
を複数回呼び出すことはできません。私は別のスレッドでsetup_socket
複数回実行しようとしました:
urls.each do |url|
Thread.new { setup_socket(url) }
end
しかし、puts
文が出力に到達しないようanyhtingを行うにはいないようです。
私はfaye-websocketの使用に制限されていませんが、ほとんどの人がこのライブラリを使用していたようです。可能であれば、私はマルチスレッドを避けたいと思います。また、時間の経過とともに変更を加える可能性(例えば、新しいウェブソケットを追加する可能性)を失うことも望まない。したがって、EM.run
句の中でURLの繰り返しを移動することは望ましくなく、代わりに複数のEMを開始する方が有益です。私はexample for starting multiple servers via EMを非常にきれいな方法で見つけました。私は似たようなものを探しています。
同時に複数のWebSocketに接続するにはどうすればよいですか?
どうして 'def setup_sockets(urls); EM.run {urls.each {...}};終わり。それは働かないの? – Casper
それはうまくいくかもしれません。 URLが時間の経過とともに変化したり、新しいURLが追加される可能性があるので、私はそれについて考えなかった。このアプローチでは、プロセスを再開する必要があり、その場で変更を加えることはできません。 – thisismydesign