Mit faye-websocket und den Code sieht sehr eventmachine ähnlich Client-Beispiel-websocket faye:Verbindung zu mehreren WebSockets mit Ruby?
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
ich mehrere Verbindungen offen parallel haben möchten. Ich kann nicht einfach setup_socket
mehrmals anrufen, da die Ausführung die Klausel EM.run
nicht verlassen wird. Ich habe versucht, setup_socket
mehrere Male in separaten Threads ausgeführt wird:
urls.each do |url|
Thread.new { setup_socket(url) }
end
Aber es scheint nicht anyhting wie die puts
Aussagen zu tun, nicht den Ausgang erreichen.
Ich bin nicht auf die Verwendung von Faye-Websocket beschränkt, aber es schien, dass die meisten Leute diese Bibliothek benutzen. Wenn möglich, möchte ich Multithreading vermeiden. Ich möchte auch nicht die Möglichkeit verlieren, im Laufe der Zeit Änderungen vorzunehmen (z. B. einen neuen Websocket hinzuzufügen). Daher ist es nicht erwünscht, die Iteration von URLs innerhalb der EM.run
-Klausel zu verschieben, stattdessen wäre der Start mehrerer EMs vorteilhafter. Ich fand eine example for starting multiple servers via EM in einer sehr sauberen Art und Weise. Ich suche nach etwas ähnlichem.
Wie kann ich mich gleichzeitig mit mehreren WebSockets verbinden?
Warum nicht 'def setup_sockets (urls); EM.run {urls.each {...}}; Ende. Funktioniert das nicht? – Casper
Das könnte funktionieren. Ich habe nicht darüber nachgedacht, da sich URLs im Laufe der Zeit ändern oder neue hinzugefügt werden. Mit diesem Ansatz müsste ich den Prozess neu starten und kann keine Änderungen im laufenden Betrieb vornehmen. – thisismydesign