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全双工、延迟的特性,应用场景比较广泛。

  1. 聊天
  2. 弹幕
  3. 协同编辑
  4. 股票报价实施更新
  5. 位置更新
  6. 直播实况

参考:https://www.freebuf.com/articles/web/369025.html

作者:hasome

出处:https://www.cnblogs.com/hasome/p/17698674.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   hasome  阅读(15)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示