Вопрос

Я протестировал много примеров сокетов, и связь между ними была довольно простой:сокет открыт и остается открытым до тех пор, пока вы его не закроете, и никакая информация не отправляется, кроме той, которую вы отправили.

С веб-сокетами HTML5 эти два момента отличаются.

Сначала, как только клиентский HTML5-сокет подключается к серверному сокету, он отправляет кучу информации:

GET /echo HTTP/1.1
Upgrade: websocket
Connection: Upgrade
Host: localhost:2002
Origin: null
Pragma: no-cache
Cache-Control: no-cache
Sec-WebSocket-Key: iYzsmhdzg6h6/UGtCLLGVA==
Sec-WebSocket-Version: 13
Sec-WebSocket-Extensions: permessage-deflate; client_max_window_bits, x-webkit-deflate-frame
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36
Cookie: _rails-socket-listener_session=dGtleFYxNjhIaUZrZVpOWUNIMHdFZFd6WW9wY2FJYjIwOWdSMFVPR1ZkYkZUakExdVlhNzMvWEphNG1IRUIvT1JsQ0N6bHF4REFXTkJUemE4R2RjOER6bXdhSEt6M0tIYmRwV0w3VzkrVGt4MzN2Z0M3MXMyYndZR3hvOGMySTJTZmdEMW9JdEE5ZERuSDB4VCtROFNnPT0tLTlheG1KamlBSVVmT0tUZ1F5bmQ0OUE9PQ%3D%3D--23413749a30295f08d277292837c76187a02a332

Как интерпретировать эту информацию?Что с этим делать?

Во-вторых, когда я отправляю некоторую строку с сервера отладки (утилита установки Hercules), сокет onmessage событие не запускается, и клиентский сокет закрывает соединение сразу после этого.

Итак, я полагаю, что веб-сокет HTML5 ожидает некоторого подтверждения связи, прежде чем его можно будет использовать.Где об этом почитать?

кстати:Я использую Ruby в качестве серверного языка.

Это было полезно?

Решение

Я протестировал множество примеров веб-сокетов....

Из того, что вы описываете, вы использовали не "веб-сокеты", а просто "сокеты", напримерпрямой TCP/IP.Веб-сокеты (напримерто, что вы называете "веб-сокетами HTML") отличаются:они используются для создания чего-то похожего на сокет по установленному HTTP-соединению.Таким образом, вы видите HTTP-запрос с надписью "Обновить:заголовок websocket" с "Sec-WebSocket-Key" и т.д.

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

Видеть http://tools.ietf.org/html/rfc6455 для получения спецификации и использования "WebSockets" в качестве ключевого слова, если вы ищете дополнительную документацию, используйте...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top