我正在使用NodeJS并发现this code实现了对套接字的本机支持,因为NodeJS默认不支持套接字。
所以我用代码打开一个服务器(服务器正在等待...),现在在客户端,我在桌面上使用了一些代码为like that的简单html
文件,看一眼就失败了,但是当我调试代码时,我发现我发现需要sec-websocket-key1
和sec-websocket-key2
的NodeJS套接字代码,而我从实现的客户端代码({{3} })仅sec-websocket-key
。
我查了一下,发现in the plnkr说:
HTML5 WebSockets使用的第一个协议是 draft-ietf-hybi-thewebsocketprotocol-00(HyBi 00)。一切顺利,直到 该协议已升级,以解决一些安全问题。结果是 这些更改包括Sec-WebSocket-Key1和Sec-WebSocket-Key2字段 已添加到客户端标题中。
基本上这解释了为什么我得到sec-websocket-key
,我知道那篇文章也说(根据that link)只有2个浏览器支持最新的websockets协议,我用chrome和firefox进行了测试,两者都发送相同的sec-websocket-key
...
web-socket-key1/2
或sec-websocket-key
sec-websocket-key1
和sec-websocket-key2
?答案 0 :(得分:2)
该文章已有几年的历史,并描述了该协议的第6版,该版本仍然只是草案,现在已经过时了。当前版本为13,在RFC 6455中有描述。这是您将在所有当前浏览器中实现的版本。
因此,最好只是忽略该文章或仅在历史背景下看到它。对于任何新的实现,请仅参考RFC,而不是之前的任何草案。
我知道那篇文章也说(根据caniuse)只有2个浏览器支持最新的websockets协议,
查看caniuse表明所有当前浏览器都支持相关版本的Websockets。
2013年的因为NodeJS默认不支持套接字。
This question概述了几种实施方式。我很确定像Socket.IO这样广泛使用的实现支持最新版本的协议。