0

我使用 WebSocket API 创建了我的个人项目,

当我从 w3c 阅读 WebSocket Spec 时,我想到了一件事。

为什么 WebSockets 使用握手来连接服务器?

我不能尝试使用套接字直接连接到服务器?

谢谢,祝你有美好的一天!

4

2 回答 2

0

你的问题不是很精确,但我想我知道你要去哪里。如果我错了,请纠正我。

新事物是:通过使用 WebSocket Upgrade 标头(在“握手”中),您可以使用对端口 80 的普通 HTTP 请求调用与服务器的低延迟双向连接。然后全双工连接开始通过服务器:80。

我不能尝试使用套接字直接连接到服务器?

你的意思是普通的TCP套接字?你总是可以尝试,你可以尝试任何端口,任何协议,但你想实现什么?如果您知道与 server:80 的 HTTP 连接可以升级为 WebSocket 连接,您可以自己编写相应的客户端,从普通的 TCP 套接字开始。但是,由于您已经知道要连接到 WebSocket 服务器,因此您应该使用现代浏览器提供的已建立的 WebSocket 客户端。

于 2013-03-07T11:41:43.247 回答
0

握手允许 WebSocket 连接与正常的 HTTP(S) 流量一起使用,也可以在相同的端口上使用。握手的另一个目的是强制执行 CORS(跨域)安全策略。

握手并不是阻止 WebSocket 连接与普通 TCP 服务器一起使用的唯一因素。WebSocket 协议的每个数据帧都有前导头数据。这允许 WebSockets 成为基于消息的协议(而不是像 TCP 那样的原始流),并增加了对直接二进制数据支持的支持,还包括屏蔽数据(以保护 WebSocket 连接免受损坏的中介。

如果您需要从浏览器连接到原始 TCP 服务,则可以使用websockify,它是一个 WebSocket 到 TCP 桥/代理。免责声明:我制作了 websockify。

于 2013-03-07T13:39:08.093 回答