Кадрирование данных сервера WebSocket (RFC6455) - PullRequest
3 голосов
/ 03 января 2012

У меня проблема. Когда я хочу достичь сервера WebSocket, сервер не может отправить данные клиенту (в Chrome 16). Например, отправив текст «Hello», сервер отправляет клиенту фрейм данных «0x81 0x05 0x48 0x65 0x6c 0x6c 0x6f», но браузер не может получить данные. Этот код неправильный?

sub getSendDataNoMask{
    my $dataStr="Hello";
    my @ret;

    push(@ret,pack("H*","81"));
    push(@ret,pack("H*","05"));
    push(@ret,$dataStr);

    return join("",@ret);
}

1 Ответ

0 голосов
/ 31 января 2012

Какую ошибку вы получаете от консоли Chrome Javascript?

Вы также не опубликовали свой код подтверждения (более вероятная проблема).Вы уверены, что рукопожатие было успешно завершено?Другими словами, вы получили событие onopen в браузере?

var ws = WebSocket("ws://myhost:6080/websocket");
ws.onopen = function (e) {
    console.log("connection opened");
};
ws.onmessage
    console.log("Got data: " + e.data);
};

Если вы не получили событие opopen, то рукопожатие никогда не завершалось успешно.Если вы получаете событие onopen, то я бы попытался отправить данные в обратном направлении и убедиться, что вы можете получать и декодировать кадры с вашего Perl-сервера перед попыткой отправки.

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