【问题标题】:HTML5 web sockets - how to communicate with them?HTML5 web sockets - 如何与它们通信?
【发布时间】:2014-07-24 21:19:07
【问题描述】:

我测试了许多套接字示例,它们之间的通信非常简单:套接字打开并保持打开状态,直到您关闭它,并且除了您发送的信息之外没有任何信息被发送。

对于 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 作为服务器端语言。

【问题讨论】:

    标签: ruby html sockets tcpserver handshaking


    【解决方案1】:

    我已经测试了很多 web socket 示例 ....

    根据您的描述,您没有使用“网络套接字”,而只是使用“套接字”,例如直接 TCP/IP。 WebSockets(例如你称之为“HTML web sockets”)是不同的:它们用于创建一些套接字,比如通过已建立的 HTTP 连接。因此,您会看到带有“Upgrade: websocket”标头、“Sec-WebSocket-Key”等的 HTTP 查询。

    在建立连接后(服务器发送响应代码为 101),WebSocket 连接有自己的数据帧和加扰,所以你不能只使用普通的套接字工具。

    有关规范,请参阅https://www.rfc-editor.org/rfc/rfc6455,如果您要查找更多文档、用法,请使用“WebSockets”作为关键字...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-29
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      相关资源
      最近更新 更多