Websocket原理及使用场景[转载]

WebSocket的使用场景服务器

社交聊天、弹幕、多玩家游戏、协同编辑、股票基金实时报价、体育实况更新、视频会议/聊天、基于位置的应用、在线教育、智能家居等须要高实时的场景网络

由轮询到WebSocketsocket

1 轮询大数据

客户端和服务器之间会一直进行链接,每隔一段时间就询问一次。客户端会轮询,有没有新消息。这种方式链接数会不少,一个接受,一个发送。并且每次发送请求都会有Http的Header,会很耗流量,也会消耗CPU的利用率。spa

2 长轮询orm

长轮询是对轮询的改进版,客户端发送HTTP给服务器以后,有没有新消息,若是没有新消息,就一直等待。当有新消息的时候,才会返回给客户端。在某种程度上减少了网络带宽和CPU利用率等问题。可是这种方式仍是有一种弊端:例如假设服务器端的数据更新速度很快,服务器在传送一个数据包给客户端后必须等待客户端的下一个Get请求到来,才能传递第二个更新的数据包给客户端,那么这样的话,客户端显示实时数据最快的时间为2×RTT(往返时间),并且若是在网络拥塞的状况下,这个时间用户是不能接受的,好比在股市的的报价上。另外,因为http数据包的头部数据量每每很大(一般有400多个字节),可是真正被服务器须要的数据却不多(有时只有10个字节左右),这样的数据包在网络上周期性的传输,不免对网络带宽是一种浪费。视频

3  WebSocket接口

如今急需的需求是能支持客户端和服务器端的双向通讯,并且协议的头部又没有HTTP的Header那么大,因而,Websocket就诞生了!流量消耗方面,相同的每秒客户端轮询的次数,当次数高达数万每秒的高频率次数的时候,WebSocket消耗流量仅为轮询的几百分之一
游戏

WebSocket协议原理iframe

Websocket是应用层第七层上的一个应用层协议,它必须依赖 HTTP 协议进行一次握手 ,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了。

Websocket的数据传输是frame形式传输的,好比会将一条消息分为几个frame,按照前后顺序传输出去。这样作会有几个好处:

1 大数据的传输能够分片传输,不用考虑到数据大小致使的长度标志位不足够的状况。

2 和http的chunk同样,能够边生成数据边传递消息,即提升传输效率。

WebSocket和Socket的区别与联系

首先,Socket 其实并非一个协议。它工做在 OSI 模型会话层(第5层),是为了方便你们直接使用更底层协议(通常是 TCP 或 UDP )而存在的一个抽象层。Socket是对TCP/IP协议的封装,Socket自己并非协议,而是一个调用接口(API)。

Socket一般也称做”套接字”,用于描述IP地址和端口,是一个通讯链的句柄。网络上的两个程序经过一个双向的通信链接实现数据的交换,这个双向链路的一端称为一个Socket,一个Socket由一个IP地址和一个端口号惟一肯定。应用程序一般经过”套接字”向网络发出请求或者应答网络请求。

Socket在通信过程当中,服务端监听某个端口是否有链接请求,客户端向服务端发送链接请求,服务端收到链接请求向客户端发出接收消息,这样一个链接就创建起来了。客户端和服务端也均可以相互发送消息与对方进行通信,直到双方链接断开

相关文章
相关标签/搜索