- 1、本文档共23页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
PAGE1
PAGE1
WebSocket通信基础
1WebSocket协议简介
WebSocket协议是一种在单个TCP连接上进行全双工通信的协议。它被设计用于替代HTTP的长轮询技术,以实现更高效、低延迟的实时数据传输。WebSocket在客户端和服务器之间建立了一个持久的连接,允许数据在任意方向上进行传输。这种连接一旦建立,就不会关闭,除非一方主动断开连接或网络问题导致连接中断。
1.1特点
全双工通信:客户端和服务器可以同时发送和接收数据,无需等待对方响应。
低延迟:与HTTP的请求-响应模型相比,WebSocket的通信延迟更低。
持久连接:连接建立后,可以长时间保持,直到一方主动断开。
状态保持:服务器可以保持与客户端的连接状态,无需通过每次请求的头信息来恢复状态。
1.2使用场景
实时聊天应用
在线游戏
实时股票报价
物联网设备监控
2WebSocket与HTTP的区别
2.1连接方式
HTTP:基于请求-响应模型,每次通信都需要建立新的连接,通信结束后连接关闭。
WebSocket:基于持久连接,一旦建立,可以进行多次数据交换,直到主动断开。
2.2数据传输
HTTP:数据传输是单向的,由客户端发起请求,服务器响应。
WebSocket:数据传输是双向的,客户端和服务器都可以主动发送数据。
2.3协议头
HTTP:每次请求和响应都有详细的头部信息,包括状态码、请求方法、URL等。
WebSocket:连接建立后,数据传输的开销较小,没有HTTP头部的冗余。
3WebSocket握手过程详解
WebSocket的握手过程是协议建立的关键步骤,它发生在客户端和服务器之间,用于协商并建立WebSocket连接。握手过程遵循特定的HTTP升级机制,以确保兼容性和安全性。
3.1客户端发起请求
客户端通过发送一个特殊的HTTP请求来开始握手过程。这个请求包含一个Upgrade头,表明客户端希望将连接升级为WebSocket协议。请求还包含一个Sec-WebSocket-Key头,用于生成握手响应中的安全密钥。
#Python示例代码,使用requests库发送WebSocket握手请求
importrequests
headers={
Upgrade:websocket,
Connection:Upgrade,
Sec-WebSocket-Key:dGhlIHNhbXBsZSBub25jZQ==,#示例密钥,实际中由客户端生成
Sec-WebSocket-Version:13
}
response=requests.get(ws:///ws,headers=headers)
3.2服务器响应
服务器接收到客户端的请求后,如果同意升级连接,会发送一个HTTP响应,响应中包含Upgrade和Connection头,以及一个Sec-WebSocket-Accept头,该头包含了由客户端Sec-WebSocket-Key计算得出的安全密钥。
#Python示例代码,使用Flask库处理WebSocket握手响应
fromflaskimportFlask,request
fromflask_socketsimportSockets
app=Flask(__name__)
sockets=Sockets(app)
@sockets.route(/ws)
defecho_socket(ws):
key=request.headers.get(Sec-WebSocket-Key)
accept_key=generate_accept_key(key)#假设这是一个生成安全密钥的函数
ws.send(fHTTP/1.1101SwitchingProtocols\r\n
fUpgrade:websocket\r\n
fConnection:Upgrade\r\n
fSec-WebSocket-Accept:{accept_key}\r\n
f\r\n)
3.3握手成功
一旦客户端和服务器的握手过程完成,连接就被升级为WebSocket协议,双方可以开始进行全双工通信。握手成功后,客户端和服务器之间的数据传输将使用二进制或文本帧,而不是HTTP请求和响应。
3.4握手失败
如果服务器拒绝升级连接,它会发送一个标准的HTTP响应,通常是一个400或403状态码,表示握手失败。客户端接收到这个响应后,会知道WebSocket连接无法建立,并可能采取其他通信策略,如使用长轮
您可能关注的文档
- 移动开发工程师-网络通信与数据管理-SQLite数据库_SQLite数据库安全与权限管理.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_SQLite数据库简介与安装.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_SQLite数据类型与基本语法.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_SQLite索引与性能优化.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_SQLite与Python集成开发.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_创建与管理SQLite数据库.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_高级主题:触发器与事务处理.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_跨平台特性与移动应用集成.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_数据操作:INSERTUPDATEDELETE.docx
- 移动开发工程师-网络通信与数据管理-SQLite数据库_数据查询:SELECT语句详解.docx
最近下载
- 北京市房屋租赁合同自行成交版2017版.doc
- 新时代高职英语(基础模块)Unit1.pptx VIP
- 煤矿班组长安全培训万名班组长培训计划教材v.pptx VIP
- 刑事诉讼法学(第二版) ( )教学课件 作者 樊崇义 刑事诉讼法学(第二版)课件( )樊崇义.ppt
- 广东省创新杯说课大赛机械类一等奖作品:铰链四杆机构说课课件.ppt
- 5G赛前复习复习试题及答案.doc VIP
- 高中英语新教材词汇总表(共七册).docx
- 2.3二次函数与一元二次方程、不等式(第1课时)课件(共19张PPT)2021-2022学年高一上学期人教A版(2019)数学必修第一册.pptx
- 5G赛前复习练习卷含答案.doc VIP
- 5G赛前复习复习测试题.doc VIP
文档评论(0)