HTML5网络套接字 - 如何与它们通信?

时间:2014-06-04 09:29:53

标签: ruby html5 sockets tcpserver handshaking

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

使用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 Web套接字在使用之前需要进行一些握手。在哪里阅读它?

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

1 个答案:

答案 0 :(得分:1)

  

我测试了许多网络套接字示例....

根据您的描述,您没有使用"网络套接字"但只是"套接字",例如直接TCP / IP。 WebSockets(例如您所称的" HTML Web套接字")是不同的:它们用于创建类似于已建立的HTTP连接的套接字。因此,您会看到带有"升级的HTTP查询:websocket"标题,使用" Sec-WebSocket-Key"等。

建立连接后(服务器使用代码101发送响应)WebSocket连接有自己的数据框架和加扰,因此您不能只使用普通的套接字工具。

请参阅http://tools.ietf.org/html/rfc6455了解规范并使用" WebSockets"如果您要查找更多文档,请使用...作为关键字...