websocket协议简介

      最后更新:2022-04-18 00:28:10 手机定位技术交流文章

      概念介绍

      • 单项工作通信:数据传输只允许一种方式;数据由一方发送,由另一方接收和传输。
      • 半双向:数据传输允许以两种方式发送和接收数据,但只有一方可以同时传输或接收数据。
      • 全职:可同时获得双向数据传输。

      网套演示。

      • WebSocket是一个协议,用于在OSI模式应用水平上进行个人TCP连接的全时通信。WebSocket 便利客户与服务器之间的数据流动。使服务器能够自动向客户端提供数据。使用网络套餐 API,浏览器和服务器之间只需要握手。两者可以形成永久的纽带。以及双向数据传输。

      出现背景

      • HTTP协议是一个使用请求/回应架构的未开口、断开、单向应用层协议。 通信询问只能由客户提出,客户才能回答。
      • 此通信模式存在问题: HTTP 协议无法让服务器主动启动与客户的通信。 许多网站使用全天候战略完成传输技术。 也就是说, 浏览器在设定的时间间隔内向服务器请求 http 。

      HTTP 和 WebSocket

      • Websocket是独立于HTTP以外的一项协议,但它必须依靠HTTP协议进行握手(握手阶段相同),在握手成功之后,数据从TCP渠道直接传输,而不考虑HTTP。

      不同点

      • Websocket 是一个长期连接, 而 http 是短期连接 。
      • Websocket 协议以 ws/wss开头, 结尾则由 http/ https 对应 http/ https 。
      • Websocketsites是有名的, 但HTTP是无国籍的。
      • 连接到 Websocket 后, 服务器和客户端可以双向传输数据。 只有客户端发出请求后, 才能同时传输 http 返回 数据 。
      • 网络工具包连接建立后,不再发出其他请求,数据直接从TCP频道传输。
        在这里插入图片描述

      HTTP协议头

      参考

      请求

      • Accept: text/html,application/xhtml+xml,application/xml
      • Accept-Encoding: gzip, deflate, br
      • Accept-Language: zh-CN,zh;q=0.9
      • Connection: keep-alive
      • Host: www.baidu.com
      • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.88 Safari/537.36

      响应

      • Connection: keep-alive
      • Content-Encoding: gzip
      • Content-Type: text/html;charset=utf-8
      • Date: Sat, 16 Apr 2022 10:43:46 GMT
      • Server: BWS/1.1

      websocket

      请求

      • Accept-Encoding: gzip, deflate
      • Accept-Language: zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6
      • Connection: Upgrade
      • Host: 192.168.1.2:8080
      • Sec-WebSocket-Key: 821VqJT7EjnceB8m7mbwWA==
      • Sec-WebSocket-Version: 13
      • Upgrade: websocket
      • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.75 Safari/537.36 Edg/100.0.1185.39

      响应

      • Connection: Upgrade
      • Date: Sat, 16 Apr 2022 10:49:05 GMT
      • Sec-WebSocket-Accept: paFykwJusIMnfpohWxA5HVpjD1Q=
      • Server: Server
      • Upgrade: websocket

      网球的顶级故事。

      • 请求头详解
      • 升级: 通知服务器使用哪类协议, 网络服务器上正在使用 Websocket 协议 。
      • Sec- WebSocket- Key:浏览器生成的随机 Base64 编码值
      • Sec-WebSocket-Version: 网络工具包协议版本 。
      • 响应头详解
      • Sec- WebSocket- Accept: 由服务器验证, 由 Sec- WebSocket- Key 加密, 用于显示客户端和服务器在通信 。

      代码展示

      服务端

      QT 用于创建服务器。

      • websocketservice.h
      • websocketservice.cpp

      客户端

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/22440.html

          热门文章

          文章分类