Клиент Websocket (браузер) получает сообщение нулевой длины - что это? - PullRequest
1 голос
/ 23 декабря 2011

Что это значит, когда объект веб-сокета в браузере получает событие onmessage с длиной данных сообщения, равной 0?

, в частности, я использую Safari в качестве клиента веб-сокета (Hixie).В клиентском коде нет ничего особенного.


    socket = new WebSocket(host);
    socket.onmessage = function(msg)
    {
        log("Received: "+msg.data.length);
        if(msg.data.length > 0) ... processing
    };

Сервер основан на PHP, а сообщения отправляются без ошибок.

1 Ответ

0 голосов
/ 23 декабря 2011

Я думаю, что это просто раздражение от Safari.В текущих выпущенных версиях Safari реализована более старая версия протокола WebSockets, и реализация работает, но ее немного не хватает.Проблема с длиной сообщения 0 довольно ручная.Более серьезная проблема - невозможность правильно закрыть соединение (в основном не закрывает фактический сокет, пока страница не будет перезагружена).

Попробуйте выполнить тот же тест с недавним Chrome.Если вы не видите проблемы там, то это просто проблема Safari.Если вы по-прежнему видите сообщения нулевой длины, то, вероятно, сервер веб-сокетов PHP отправляет сообщения нулевой длины (возможно, из-за того, что они не работают).

...