gpt4 book ai didi

google-chrome - google chrome实现的是哪个版本的websockets协议(protocol)草案

转载 作者:行者123 更新时间:2023-12-01 13:03:00 34 4
gpt4 key购买 nike

我正在尝试用 java 实现一个 websockets 服务器,但我无法理解 google chrome 实现的 websocket 协议(protocol)的版本。在 this Chromium 团队的博客文章提到他们已经实现了 websockets 协议(protocol)的版本 76,该协议(protocol)应该具有以下握手请求(从官方版本 76 规范(第 1.2 节)复制):

GET /demo HTTP/1.1
Host: example.com
Connection: Upgrade
Sec-WebSocket-Key2: 12998 5 Y3 1 .P00
Sec-WebSocket-Protocol: sample
Upgrade: WebSocket
Sec-WebSocket-Key1: 4 @1 46546xW%0l 1 5
Origin: http://example.com

^n:ds[4U

我从 google chrome(8.0.552.237) 收到的握手请求是:

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Upgrade
Host: localhost:8082
Origin: http://localhost:8081
Sec-WebSocket-Key1: g3 I 9w F : Kt 3?u784C-0 99 5z
Sec-WebSocket-Key2: 4 S5l&Y4m]11+4 032s Ecfl

ïÿÁëƒ^

谁能解释一下为什么谷歌版本和官方规范之间存在差异。谷歌版本的正确响应格式是什么。

PS:有人估计 websockets 协议(protocol)什么时候会完成吗?

最佳答案

Chrome 目前实现了 draft-hixie-thewebsocketprotocol-76也称为 draft-ietf-hybi-thewebsocketprotocol-03 .协议(protocol)和规范现在由 IETF HyBi 工作组发布,因此 03 编号实际上更正确,下一版本的规范将继续该编号(但大多数人仍称其为 v76)。

您从 Chrome-8.0.552 获得的握手确实符合规范。差异是因为 header 的顺序可能会有所不同,并且每个新连接的键值都不同,主机、来源、路径和协议(protocol)值取决于 Javascript 调用连接的方式以及调用的 URL页面。

响应看起来像这样(尽管不完全是因为响应是基于客户端握手生成的):

HTTP/1.1 101 WebSocket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
Sec-WebSocket-Origin: http://example.com
Sec-WebSocket-Location: ws://example.com/demo
Sec-WebSocket-Protocol: sample

8jKS'y:G*Co,Wxa-

我一直在关注 HyBi 工作组,目前还没有关于协议(protocol)何时最终确定的估计。然而,新的草案 (04) 已经发布,试图解决浏览器供应商的安全问题。 (05) 版本可能会在接下来的几周内发布。浏览器供应商可能不会实现 04(因为仍然存在很大的低共识区域)。如果大多数浏览器供应商都采用 05 并且没有额外的安全问题,我怀疑协议(protocol)的最终版本不会有太大变化。

但是请务必注意,WebSockets 的浏览器 API 可能不会受到协议(protocol)更改的影响。

关于google-chrome - google chrome实现的是哪个版本的websockets协议(protocol)草案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4878830/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com