Есть ли у Firefox ограничение на количество сообщений в WebSocket? - PullRequest
0 голосов
/ 03 мая 2011

В последнее время я играю с WebSockets, как мой последний игровой проект.Я заметил небольшую задержку сообщений и даже отбрасывание сообщений, когда я подключил контроллер клавиатуры к клиенту WebSocket, который просто отправляет нажатия / отпускания клавиш на сервер.

Так что, если я отправляю несколько сообщений в быстрой последовательностиПохоже, что Firefox делает паузу на некоторое время между каждым сообщением или даже отбрасывает их, если их слишком много.

Тот же код работает в Chrome без задержек или отбрасывания сообщений.Это преднамеренно?

Редактировать: Вот упрощенная страница, на которой проблема возникает со мной:

<code><!DOCTYPE html>
<html lang="en">
  <head>
    <title>WebSocket Test</title>
    <meta charset="utf-8"/>
    <script>
      socket = new WebSocket("ws://example.com/websockettest");
      socket.onopen = function() { message("[[ Connected ]]"); }
      socket.onclose = function() { message("[[ Disconnected ]]"); }
      socket.onmessage = function(e) { message(e.data); }
      function message(msg) {
        document.getElementById("messages").textContent += msg + "\n";
      }
    </script>
  </head>
  <body>
    <input type="button" value="Send" onclick="socket.send('Hey!');"/>
    <input type="button" value="Send two" onclick="socket.send('Hey once!');
                                                   socket.send('Hey twice.');"/>
    <pre id="messages">

Обратите внимание, что не имеет значения, нажимаю ли я несколько раз кнопку «Отправить» или просто нажимаю «Отправить два».

1 Ответ

2 голосов
/ 04 мая 2011

Я тестировал firefox-4.0.1 с noVNC с включенными WebSockets вручную, и он работает без потери сообщений или задержек (в любом направлении).noVNC отправляет большой трафик в обоих направлениях, и любые сообщения, потерянные, вызывают сбой протокола, который я никогда не видел ни в одной версии Firefox 4 (альфа, бета, 4.0, 4.0.1), и любые задержки очень очевидны, потому что noVNC очень интерактивен.

Ваш код на стороне клиента выглядит нормально, поэтому я подозреваю, что что-то отличное в том, как firefox действует на проводе, вызывает ошибку либо в SuperWebSocket, либо в вашем коде SuperWebSocket.Похоже, у вас есть довольно простой сервер, с которым вы можете воспроизвести это.Я предлагаю реализовать эквивалентный простой тестовый сервер с другой средой, такой как Socket.IO (если у вас есть доступ к системе Linux) или сервлет Jetty WebSockets .Если он воспроизводится с одним из них, возможно, вы обнаружили ошибку в клиенте Firefox WebSockets, и вам следует сообщить об ошибке в Mozilla.Если он там не воспроизводится, то это, вероятно, ошибка в SuperWebSocket или при его использовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...