websocket 发送ping_WebSocket 协议初探

公司项目使用WebSocket作为主要的请求方式,知其然也要知其所以然,会用也需要知道它的基本原理,所以写此文章分享下自己的浅见,文章主要包括以下内容:

  • WebSocket是什么
  • WebSocket和Socket区别
  • 建立连接
  • 数据帧格式
  • 发送数据

聊天Demo代码: github.com/madaoCN/Web… 包含tornado写的 Server 和 Client 脚本 和 简单ws使用实例的iOS代码

WebSocket是什么

WebSocket是一种在单个 TCP 连接上进行 全双工 通信的协议,WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在WebSocket API中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。WebSocket协议在2011年由 IETF 标准化为 RFC 6455

1. 优势
  • 全双工,服务器可以主动推送数据给客户端,持久连接,实时性强
  • 省流量,协议控制的数据包头部较小,只需要进行一次完整的http握手,后续升级为WebSocket进行通信,而HTTP的header一般有几十字节,而且每次通信都需要携带完整的头部
  • 不仅可以发送文本,也可以发送二进制,对二进制数据比较友好

WebSocket和Socket联系

Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口, 而WebSocket和Http一样是属于应用层协议。

300cb405c9c64e87bb11437183039cf0.png

当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。

建立连接

Websocket 握手过程复用了HTTP协议的信道,然后对服务进行升级,后续就使用Websocket协议进行通信,所以只需要一次 HTTP 握手,服务端就能一直与客户端保持通信,直到关闭连接。

一、升级请求

GET / HTTP/1.1Host: 192.168.1.250:6767Sec-WebSocket-Version: 13Upgrade: websocketSec-WebSocket-Key: cNtBvwgrxXtqDppb/0mcMw==Connection: UpgradeOrigin: http://192.168.1.250:6767

与HTTP报文不太一样的主要是 Connection: Upgrade : 标识要升级协议 Upgrade: websocket : 升级到 Websocket 协议 Sec-WebSocket-Version: 13 : 标明WebSocket协议的版本号 Sec-WebS

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值