WebSocket 通信_第1页
WebSocket 通信_第2页
WebSocket 通信_第3页
WebSocket 通信_第4页
WebSocket 通信_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

WebSocket通信,2017.10.26,背景,实时数据游戏聊天SNS(社交网络服务)直播,年轻的年轻人啊,创新无限的未来,常用web实时技术,年轻的年轻人啊,创新无限的未来,在客户端的页面使用隐藏窗口向服务端发出长连接请求。服务器端接到这个请求后作出回应并不断更新连接状态以保证客户端和服务器端的连接不过期。,流,轮询,年轻的年轻人啊,创新无限的未来,轮询,场景再现:客户端:啦啦啦,有没有新信息(Request)服务端:没有(Response)客户端:啦啦啦,有没有新信息(Request)服务端:没有。(Response)客户端:啦啦啦,有没有新信息(Request)服务端:你好烦啊,没有啊。(Response)客户端:啦啦啦,有没有新消息(Request)服务端:好啦好啦,有啦给你。(Response)客户端:啦啦啦,有没有新消息(Request)服务端:。没。没。没有(Response),年轻的年轻人啊,创新无限的未来,长轮询,年轻的年轻人啊,创新无限的未来,长轮询,场景再现:客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request)服务端:额。等待到有消息的时候。来给你(Response)客户端:啦啦啦,有没有新信息,没有的话就等有了才返回给我吧(Request),年轻的年轻人啊,创新无限的未来,流,流技术方案通常就是使用一个隐藏的窗口向服务器端发起一个长连接的请求,服务端接收到这个请求以后做出回应,并不断跟新连接状态以保证客户端和服务端不过期,通过这种机制将服务端的信息源源不断的推向客户端,年轻的年轻人啊,创新无限的未来,存在问题,非真正实时技术使用Ajax方式模拟实时效果,每次客户端和服务器端交互,都是一次HTTP的请求和应答过程,且每次的HTTP请求和应答都带有完整HTTP头信息,增加传输的数据量,年轻的年轻人啊,创新无限的未来,Websocket,Websocket是一种双向通信协议,在建立连接后,websocket服务器和浏览器客户端都能主动向对方发送和接收数据,如同socket;websocket需要类似tcp的客户端和服务端通过握手连接,连接成功后才能相互通信。,年轻的年轻人啊,创新无限的未来,Websocket,年轻的年轻人啊,创新无限的未来,图2.传统http客户端服务器交互,图1.websocket客户端服务器交互,Websocket,年轻的年轻人啊,创新无限的未来,Websocket类似socket的http长连接通信方式,一旦连接建立,后续数据都以帧形式传输,在客户端或服务器断开连接前,不需要客户端和服务器重新发起连接请求,在高并发及负载流量大的情况下,可节省网络带宽资源,且客户端发送和接收信息是在同一个持久连接上发起,实时性优势明显。传统http每次请求-应答都需要客户端服务器建立连接模式。,Websocket,年轻的年轻人啊,创新无限的未来,客户端到服务端,GET/chatHTTP/1.1Host:Connection:UpgradeSec-WebSocket-Key2:129985Y31.P00Upgrade:WebSocketSec-WebSocket-Key1:4146546xW%0l15Origin:8-bytesecuritykey,GET/chatHTTP/1.1:打开阶段握手,使用http协议。Upgrade:websocket,表示请求为特殊http请求,请求的目的是要将客户端和服务端的通信协议从http上升为websocket;Sec-websocket-key、8-bytesecuritykey,客户端向服务端提供的握手信息;,Websocket,年轻的年轻人啊,创新无限的未来,HTTP/1.1101WebSocketProtocolHandshakeUpgrade:WebSocketConnection:UpgradeWebSocket-Origin:WebSocket-Location:ws:/,16-bytehashresponse:服务端解析客户端头信息,生成16位安全密钥返回给客户端,以表明服务端获取了客户端的请求;一旦连接建立,后续就可以通过tcp通信(双向传输数据)。,服务端到客户端,数据通信,年轻的年轻人啊,创新无限的未来,WebSocket的数据在发送时,被组织为依次序的一串数据帧(dataframe),然后进行传送。传送的帧类型分为两类:数据帧(dataframe)和控制帧(Controlframe)。数据帧可以携带文本数据或者二进制数据;控制帧包含关闭帧(Closeframe)和Ping/Pong帧,数据通信,年轻的年轻人啊,创新无限的未来,MASK值:从客户端进行发送的帧必须置此位为1,从服务器发送的帧必须置为0。如果任何一方收到的帧不符合此要求,则发送关闭帧(Closeframe)关闭连接。opcode的值:0 x1代表此帧为文本数据帧,0 x2代表此帧为二进制数据帧,0 x8为控制帧中的连接关闭帧(closeframe),0 x9为控制帧中的Ping帧,0 xA(十进制的10)为控制帧中的Pong帧。Ping/Pong帧:Ping帧和Pong帧用于连接的保活(keepalive)或者诊断对端是否在线。这两种帧的发送和接收不对WEB应用公开接口,由实现WebSocket协议的底层应用(例如浏览器)来实现它。,浏览器支持情况,年轻的年轻人啊,创新无限的未来,主流的浏览器(包括PC和移动终端)现已都支持标准的HTML5的WebSocketAPI,这意味着客户端的WebSoc

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论