websocket
简介#
WebSocket 是HTML5一种新的网络传输协议,位于 OSI 模型的应用层,可在单个TCP连接上进行全双工通信。WebSocket 建议于 TCP 协议之上,与 HTTP 协议有良好的兼容性。协议标识符是ws;如果加密,则为wss。
WebSocket与HTTP的区别#
HTTP协议时请求-响应式的,一般是一个请求建立一次握手,在HTTP1.1版本开始,TCP连接可别复用。
HTTP协议只能由客户端发送信息到服务端,服务端做出响应。
WebSocket通信是双向的,既可以由客户端发送信息,到服务端。也可以有服务端发送信息到客户端。
WebSocket通信建立过程#
websocket通常是由客户端JavaScript脚本创建
var ws = new WebSocket("wss://normal-website.com/chat");
为了建立连接,会通过HTTP协议发送一个请求,告诉服务器接下来要使用websocket进行通信,如果服务器同意请求,接下来就会进行三次握手
WebSocket 握手消息的几个特性值得注意:
请求和响应中 的Connection和Upgrade标头表明这是一次 WebSocket 握手。
Sec-WebSocket-Version请求头指定WebSocket协议版本的客户端希望使用。通常是13.
Sec-WebSocket-Key请求报头包含Base64编码的随机值,这应该在每个握手请求是随机产生的。并不是用于身份认证的。
Sec-WebSocket-Accept响应报头包含在提交的值的散列Sec-WebSocket-Key请求头,具有在协议规范中定义的特定的字符串串联。这样做是为了防止错误配置的服务器或缓存代理导致误导性响应。
三次握手以后表示建立了客户端与服务端建立websocket连接,可以通过websocket协议进行通信。
由于TCP协议是复用的,所以可以通过一次连接,发送多个信息。
原则上,WebSocket 消息可以包含任何内容或数据格式。在现代应用程序中,通常使用 JSON 在 WebSocket 消息中发送结构化数据。
使用场景#
基于WebSocket全双工、延迟的特性,应用场景比较广泛。
- 聊天
- 弹幕
- 协同编辑
- 股票报价实施更新
- 位置更新
- 直播实况
作者:hasome
出处:https://www.cnblogs.com/hasome/p/17698674.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)