这些请求头的意义如下:
Connection: Upgrade:表示要升级协议
Upgrade: websocket:表示要升级到websocket协议 。
Sec-WebSocket-Version:13:表示websocket的版本 。如果服务端不支持该版本,需要返回一个Sec-WebSocket-Versionheader,里面包含服务端支持的版本号 。
Sec-WebSocket-Key:与后面服务端响应首部的Sec-WebSocket-Accept是配套的,提供基本的防护,比如恶意的连接,或者无意的连接 。
当返回的状态码为101时,表示服务端同意客户端协议转换请求,并将其转换为Websocket协议,该过程称之为Websocket协议握手(websocket Protocol handshake),协议升级完成后,后续的数据交换则遵照WebSocket的协议 。
前面我们一直说「握手」,握手究竟指的是什么呢?在计算机领域的语境中,握手通常是指确保服务器与其客户端同步的过程 。握手是WebSocket协议的基本概念 。
为了直观展示,以上实例中传输的消息均以文本为例,WebSocket还支持二进制数据的传输,而这就要依靠「数据传输协议」来完成了,这是下一篇文章的内容,敬请期待 。
总结
为了完成与服务端的双向通信,我们选取了WebSocket协议作为网络通信协议,并通过对比传统HTTP协议和其他相关的即时通讯技术,总结出,在为移动设备下应用选择的合适的网络通信协议时,可以有以下的参考标准:
- 支持全双工通信
- 支持二进制数据传输
- 支持扩展
- 跨语言、跨平台实现
同时,也对WebSocket协议在Android端的实现提供了示例,并对WebSocket协议握手流程进行了初步窥探,当然,这只是第一步,往后的心跳保活、断线重连、消息队列等每一个都可以单独作为一个课题,会在后面陆续推出的 。
推荐阅读
- 黑客从Moola市场DeFi协议中窃取了840万美元
- 豪门|守护家产!妮可拉重署婚后协议,让大布签字,贝嫂否认攀上豪门
- 谁有资格签安置补偿协议? 安置补偿
- 终端陈列怎么搞? 终端陈列协议
- 詹妮弗·洛佩兹|emmm,他被婚前协议折腾垮了?
- 影视解说|《心动5》男4女4为爱奔赴,不顾7位数罚款?网友:不过是签了协议
- 读懂网络通信技术原理 网络通信技术
- IM OpenIM一个基于 Go 实现的开源即时通讯项目
- 心动5|《心动5》男4女4为爱奔赴,不顾7位数罚款?网友:不过是签了协议
- 山东即时高速路况来了,绕行方法快收好 山东高速路况查询