HTML5 WebSockets,标准改变了吗?

时间:2015-12-28 05:24:43

标签: javascript node.js html5 sockets

我正在使用NodeJS并发现this code实现了对套接字的本机支持,因为NodeJS默认不支持套接字。

所以我用代码打开一个服务器(服务器正在等待...),现在在客户端,我在桌面上使用了一些代码为like that的简单html文件,看一眼就失败了,但是当我调试代码时,我发现我发现需要sec-websocket-key1sec-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 ...

  • 我应该支持哪些 true 协议(是正确的),使用web-socket-key1/2sec-websocket-key
  • 的协议
  • 哪些浏览器支持(如果应支持这些浏览器)sec-websocket-key1sec-websocket-key2
  • 我的客户端Web套接字或服务器端是否完全出错?
  • 是否有垫片可以解决问题?

1 个答案:

答案 0 :(得分:2)

该文章已有几年的历史,并描述了该协议的第6版,该版本仍然只是草案,现在已经过时了。当前版本为13,在RFC 6455中有描述。这是您将在所有当前浏览器中实现的版本。

因此,最好只是忽略该文章或仅在历史背景下看到它。对于任何新的实现,请仅参考RFC,而不是之前的任何草案。

  

我知道那篇文章也说(根据caniuse)只有2个浏览器支持最新的websockets协议,

查看caniuse表明所有当前浏览器都支持相关版本的Websockets。

  

因为NodeJS默认不支持套接字。

2013年的

This question概述了几种实施方式。我很确定像Socket.IO这样广泛使用的实现支持最​​新版本的协议。