" name="sm-site-verification"/>
侧边栏壁纸
博主头像
PySuper博主等级

千里之行,始于足下

  • 累计撰写 203 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
Web

Django WebSocket (一):WebSocket 概念及原理

PySuper
2021-01-26 / 0 评论 / 0 点赞 / 11 阅读 / 3805 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

WebSocket

基本概念

  • WebSocket允许服务端主动向客户端推送数据
  • 在WebSocket协议中
    • 客户端浏览器和服务器只需要一次握手就可以创建持久性的连接
    • 并在浏览器和服务器之间进行双向的数据传输
  • HTTP、WebSocket
    • 都是建立在TCP连接基础之上
    • websocket协议是通过http协议来建立传输层的TCP连接
docker

请求头

  • ConnectionUpgrade:表示客户端发起的是WebSocket请求
  • Sec-WebSocket-Version:客户端所使用的的WebSocket协议版本号,服务端会确认是否支持该版本号
  • Sec-WebSocket-Key:一个Base64编码值,有浏览器随机生成,用于升级request
  • Sec-WebSocket-Extensions:客户端想要表达的协议级的扩展

响应头

  • HTTP/1.1 101 Switching Protocols:切换协议,WebSocket协议通过HTTP协议来建立运输层的TCP连接
  • ConnectionUpgrade:表示服务端返回的是WebSocket响应

连接过程

目的:用户能够实时接受信息

JavaScript轮询

  • 客户端发送GET,请求,服务器返回页面数据
  • 客户端不停地发送请求,询问服务器是否有数据返回,服务器一直响应请求
  • 这种方式,服务器会浪费很多资源
docker

WebSocket连接

  • 1 .客户端通过HTTP协议发送GET请求,携带ConnectionUpgrade,指定要将HTTP协议升级成WebSocket协议
  • 2 .服务器给客户端返回HTTP/1.1 101 Switching Protocols,表示协议切换成功
  • 3 .服务端与客户端进行通信
docker

优缺点及应用场景

  • 优点:
    • 支持双向通信,实时性更强
    • 数据格式比较轻量,性能开销小,通信高效
    • 支持扩展。用户可以扩展协议或者实现自定义的自协议(比如支持自定义压缩算法)
  • 缺点
    • 少部分浏览器不支持,浏览器支持的程度和方式有区别
    • 长连接对后端处理业务的代码稳定性要求更高,后端推送功能相对复杂
    • 成熟的HTTP生态下有大量的组件可以使用,WebSocket较少
  • 应用场景
    • 及时聊天通信,网站消息通知
    • 在线协同编辑,如腾讯文档
    • 多玩家在线游戏,视屏弹幕、股票基金实时报价

Django 使用 WebSocket


0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区