У меня возникла странная проблема с WebSocket. Когда я открываю новый сокет, у меня есть и сервер, и клиент отправляют сообщения квитирования друг другу. Однако код, похоже, выполняется только иногда.WebSocket onopen - сообщение отправлено иногда
сервера Код (рубин):
# Set up the websocket server on port 8080
EventMachine::WebSocket.start(:host => "localhost", :port => 8080, :secure => false) do |ws|
ws.onopen do
ws.send "WebSocket opened on port 8080."
end
ws.onmessage do |msg|
puts msg
end
ws.onclose do
puts "WebSocket closed."
end
end
код клиента (JavaScript):
connection.onopen = function() {
connection.send("Ping!");
};
connection.onerror = function() {
console.log("WebSocket error.");
};
connection.onmessage = function(e) {
console.log("Server: " + e.data);
};
Выход консоли на стороне сервера после того, как освежающий, ждет пару секунд каждый раз:
WebSocket closed.
WebSocket closed.
WebSocket closed.
Ping!
WebSocket closed.
WebSocket closed.
WebSocket closed.
WebSocket closed.
Ping!
WebSocket closed.
WebSocket closed.
Каждый раз, когда «Пинг!» отправляется, клиент также получает сообщение квитирования, направленное на него. Таким образом, отказ происходит с обеих сторон - когда он работает, обе стороны получают свои сообщения.
Что может быть причиной этого?
javascript - это файл ReactJS jsx, который загружается на каждую страницу - нет проблем с зависимостью, потому что сокет работает, это просто сообщение подтверждения, которое не отображается. Соединение определено глобально. – NmdMystery