我正在使用 NodeJS 并发现 this code它实现了对套接字的 native 支持,因为 NodeJS 默认情况下不支持套接字。
所以我使用代码打开服务器(服务器正在等待...),现在对于客户端,我在桌面上使用了一些简单的 html
文件,代码为 like that ,乍一看它失败了,但是当我调试一下代码时,我发现 NodeJS 套接字代码需要 sec-websocket-key1
和 sec-websocket-key2
code> 而我从我实现的客户端代码( in the plnkr )中获得的只是 sec-websocket-key
。
我查了一下,发现 that link那句话:
The first protocol used by HTML5 WebSockets was draft-ietf-hybi-thewebsocketprotocol-00 (HyBi 00). All was well until the protocol was upgraded to remedy some security issues. As a result of these changes, the Sec-WebSocket-Key1 and Sec-WebSocket-Key2 fields were added to the client header.
基本上这解释了为什么我得到sec-websocket-key
,我知道那篇文章也说(根据caniuse)只有2个浏览器支持最新的websockets协议(protocol),我用chrome进行了测试和 firefox 并且都发送相同的 sec-websocket-key
...
- 我应该支持什么true协议(protocol)(是正确的),使用
web-socket-key1/2
或只是sec-websocket -键
- 哪些浏览器支持(如果应该支持)
sec-websocket-key1
和sec-websocket-key2
? - 我的客户端 Web 套接字或服务器端是否做错了什么?
- 是否有垫片可以修复某些问题?
最佳答案
这篇文章已经有几年的历史了,描述了该协议(protocol)的第 6 版,该版本仍然只是一个草案,现在早已过时了。当前版本为 13,描述于 RFC 6455 。您会发现当前所有浏览器都实现了这个版本。
因此,最好直接忽略该文章或仅在历史背景下查看它。对于任何新的实现,请仅引用 RFC,而不是任何以前的草案。
I know that article also say that(according to caniuse) there only 2 browser supports the latest websockets protocol,
查看 caniuse显示当前所有浏览器都支持相关版本的Websockets。
since NodeJS doesn't supports sockets by default.
This question从 2013 年开始,我们对几种实现进行了概述。我很确定像 Socket.IO 这样广泛使用的实现支持最新版本的协议(protocol)。
<小时/>关于javascript - HTML5 WebSockets,标准改变了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488069/