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

时间:2013-03-07 09:44:15

标签: html5 websocket

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

当我从w3c读取WebSocket规范时,有一件事在脑子里浮现出来。

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

我无法尝试使用套接字直接连接到服务器?

谢谢,祝你有愉快的一天!

2 个答案:

答案 0 :(得分:0)

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

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

  

我无法尝试使用套接字直接连接到服务器?

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

答案 1 :(得分:0)

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

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

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