javascript - HTML5 WebSockets,标准改变了吗?

标签 javascript node.js html sockets

我正在使用 NodeJS 并发现 this code它实现了对套接字的 native 支持,因为 NodeJS 默认情况下不支持套接字。

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

相关文章:

javascript - data-th-id 问题

javascript - 如何根据推文是否具有积极或消极情绪来更改处理中的背景颜色?

JavaScript 无法删除字符串末尾的字符

javascript - 响应式绝对定位

javascript - React Native 如何从嵌套数据创建 VictoryPie

node.js - npm npm run watch-poll 发生 homestead 错误

javascript - Grunt 未加载

node.js - 使用memwatch进一步定位内存泄漏

php - 如何使用 PHP 解释 HTML5 输入日期值

php - 用PHP将表单数据传递到MySQL数据库