【问题标题】:How can I make Chromium send the new WebSocket handshake?如何让 Chromium 发送新的 WebSocket 握手?
【发布时间】:2011-05-24 12:06:00
【问题描述】:

我遇到了this code change in Chromium。它说 Chromium 现在支持两种握手版本,代码似乎证实了这一点。我的意思是Wikipedia (draft-ietf-hybi-thewebsocketprotocol-06) 的第二个版本。

但是,当我连接到我的服务器时,我唯一获得的是旧版本,即包括这些标头:

Sec-WebSocket-Key1: 4 @1  46546xW%0l 1 5
Sec-WebSocket-Key2: 12998 5 Y3 1  .P00

但不是新版本,这将是一个包含以下内容的请求:

Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==

我在这里缺少什么?我下载了最新的夜间版本,它已在两周多前被包含在内,所以我猜这不是原因。

如何让 WebSocket 发送新的握手版本?

【问题讨论】:

  • 更新:当前 Chrome 稳定版发送新的握手格式,所以这个问题不再适用。现在可以毫无问题地在 Chrome 中使用新格式。

标签: google-chrome protocols websocket chromium handshake


【解决方案1】:

您发布的代码链接用于握手的服务器端(在 Chrome 中可能会使用一些地方,例如远程调试和作为扩展的代理)。

如果你真的想使用新的 HyBi-07 协议版本,你可以尝试使用我制作的 web-socket-js 的this branch。 Chrome 切换到新协议后,默认情况下 web-socket-js 也会切换。为了使 web-socket-js 在已经支持 WebSockets 的浏览器中工作,您需要对其进行一些小的调整以使用不同的对象名称而不是 WebSocket。

我希望 Chrome/WebKit 不久就会添加新协议。请注意,用于添加二进制支持的 API changes 是最近才出现的 decided,因此 Chrome 可能会在 API 完全支持协议启用的新功能之前添加新协议。

【讨论】:

  • 我不知道这是一个如此实际的话题。感谢您的解释和链接。但是,你能告诉我 web-socket-js 对 Chrome 的原生 WebSocket 接口有什么用处吗?很抱歉,我无法真正分辨出其中的区别。
  • pimvdb:新版本的协议解决了一些与行为不端的 HTTP 代理有关的安全问题,它还增加了二进制消息支持。您在问如何使用新协议,由于我不知道当前有任何浏览器发布了新协议,您可以使用 web-socket-js shim 来获取新协议(尽管 web-socket 的那个分支-js 尚未实现二进制支持)。如果您对新协议没有特定需求,则只需使用当前 Chrome 版本中内置的旧协议即可。
【解决方案2】:

我所知道的唯一实现 07 协议的浏览器是这个版本的 FF4:

http://www.ducksong.com/misc/websockets-builds/ws-07/

【讨论】:

    猜你喜欢
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多