传统的Web端即时通讯技术从短轮询到长连询,再到Comet技术,在如此原始的HTML标准之下,为了实现所谓的“即时”通信,技术上可谓绞尽脑汁,极尽所能。
自从HTML5标准发布之后,WebSocket这类技术横空出世,实现Web端即时通讯技术的便利性大大提前,以往想都不敢想的真正全双工实时通信,如此早已成为可能。

协议运行在OSI的哪层?
应用层,WebSocket协议是一个独立的基于TCP的协议。 它与HTTP唯一的关系是它的握手是由HTTP服务器解释为一个Upgrade请求。
协议运行的标准端口号是多少?
默认情况下,WebSocket协议使用端口80用于常规的WebSocket连接、端口443用于WebSocket连接的在传输层安全(TLS)RFC2818之上的隧道化口。
其中帧的一些重要字段需要解释一下:
1)Upgrade:`upgrade`是HTTP1.1中用于定义转换协议的`header`域。它表示,如果服务器支持的话,客户端希望使用现有的「网络层」已经建立好的这个「连接(此处是 TCP 连接)」,切换到另外一个「应用层」(此处是 WebSocket)协议;
2)Connection:`Upgrade`固定字段。Connection还有其他字段,可以自己给自己科普一下;
3)Sec-WebSocket-Key:用来发送给服务器使用(服务器会使用此字段组装成另一个key值放在握手返回信息里发送客户端);
4)Sec-WebSocket-Protocol:标识了客户端支持的子协议的列表;
5)Sec-WebSocket-Version:标识了客户端支持的WS协议的版本列表,如果服务器不支持这个版本,必须回应自己支持的版本;
6)Origin:作安全使用,防止跨站攻击,浏览器一般会使用这个来标识原始域;
7)Sec-WebSocket-Accept:服务器响应,包含Sec-WebSocket-Key 的签名值,证明它支持请求的协议版本。即时通讯聊天软件app开发可以加蔚可云咨询
关于Sec-WebSocket-Key和Sec-WebSocket-Accept的计算是这样的:
所有兼容RFC 6455

本文介绍了Web端即时通讯技术的发展,重点讲解了WebSocket协议,包括其工作原理、端口号、重要字段及其作用。同时,提到了socket.io库如何通过特性检测适应不同客户端,实现可靠连接。还探讨了传统的长连接技术如长轮询和Comet,并指出WebSocket在现代Web应用中的重要性。
最低0.47元/天 解锁文章
2166

被折叠的 条评论
为什么被折叠?



