【问题标题】:HTML5 WebSockets, was the standard changed?HTML5 WebSockets,标准改变了吗?
【发布时间】:2016-04-01 23:32:40
【问题描述】:

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

所以我使用代码打开服务器(服务器正在等待...),现在对于客户端,我在桌面上使用了一些简单的html 文件,代码为like that,乍一看它失败了,但是当我稍微调试一下代码时,我发现我发现的 NodeJS 套接字代码需要 sec-websocket-key1sec-websocket-key2,而我从我实现的客户端代码(in the plnkr)只得到 sec-websocket-key

我查了一下,发现 that link 上面写着:

HTML5 WebSockets 使用的第一个协议是 草稿-ietf-hybi-thewebsocketprotocol-00 (HyBi 00)。一切都很好,直到 该协议已升级以解决一些安全问题。因此 在这些更改中,Sec-WebSocket-Key1 和 Sec-WebSocket-Key2 字段 已添加到客户端标头中。

基本上这解释了为什么我得到sec-websocket-key,我知道那篇文章也说(根据caniuse)只有2个浏览器支持最新的websockets协议,我用chrome和firefox测试过,两者都发送相同的@987654331 @...

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

【问题讨论】:

    标签: javascript node.js html sockets


    【解决方案1】:

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

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

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

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

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

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


    【讨论】:

    • Steffen,谢谢,关于 NodeJS 的实现,我想我需要新的实现吗?
    猜你喜欢
    • 2015-06-06
    • 2015-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多