close, похоже, не работает с WebSocket


У меня есть такой простой код javascript:

window.ws = new WebSocket('ws://127.0.0.1:8000/');

ws.onopen = function() { 
  ws.send('hello');
}

И сервер в Ruby вот так:

require 'em-websocket'

class Websocket
  def run
    EventMachine.run do

      EM::WebSocket.start(host: '0.0.0.0', port: '8000') do |ws|
        ws.onopen do |handshake|
          puts "Connected"
        end

        ws.onclose do
          puts "Closed"
        end

        ws.onmessage do |msg|
          p msg
        end
      end
    end
  end
end

Когда соединение закрыто, сервер должен напечатать "закрыто". В браузере, когда я делаю window.ws.close(), сервер ничего не получает, но когда я перезагружаю страницу, он печатает сообщение.

Есть ли способ заставить клиента сказать, что соединение закрыто?
1 4

1 ответ:

Я публикую этот ответ, так как было обнаружено, что проблема связана с использованием "Docker", и был опубликован новый вопрос, относящийся к фактической проблеме.

Этот ответ должен (будем надеяться) правильно отметить, что этот вопрос больше не нуждается во внимании, чтобы сообщество могло сосредоточиться на оставшихся без ответа вопросах.

Смотрите комментарии к вопросу для получения более подробной информации.