HTML5 web套接字-如何与它们通信



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

对于HTML5 web sockets,这两个时刻是不同的。

首先,一旦客户端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 setup utility)发送一些字符串时,套接字的onmessage事件没有被触发,客户端套接字在此之后立即关闭连接。

所以,我认为HTML5的web套接字期望一些握手之前,它可以使用。在哪里可以读到?

我使用Ruby作为服务器端语言。

我已经测试了很多web套接字的例子....

从你描述的内容来看,你没有使用"web sockets";而是简单的"套接字",例如直接TCP/IP。WebSockets(例如你所说的"HTML web socket")是不同的:它们被用来在一个已建立的HTTP连接上创建类似套接字的东西。因此,你看到的HTTP查询带有"Upgrade: websocket"头,带有"sec - websocket - key";等。

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

参见https://www.rfc-editor.org/rfc/rfc6455获取规范和使用"WebSockets"作为关键字,如果您寻找更多的文档,usage…

相关内容

  • 没有找到相关文章

最新更新