WebSocket介绍
一、轮询与长轮询
二、WebSocket介绍
三、使用WebSocket实现一个多人聊天室
四、使用WebSocket实现一个一对一聊天(单聊)
一、轮询与长轮询
转自:http://www.cnblogs.com/guanghe/p/9217015.html
轮询
轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。
优点:后端程序编写比较容易。
缺点:请求中有大半是无用,浪费带宽和服务器资源。(而每一次的 HTTP 请求和应答都带有完整的 HTTP 头信息,这就增加了每次传输的数据量)
实例:适于小型应用。
举个例子:
客户端向服务端发起一个请求
服务端没消息
客户端向服务端发起一个请求
服务端没消息
客户端向服务端发起一个请求
服务端终于有消息了,我都快累死了
客户端你以为我不累啊
长轮询
长轮询:客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接(或到了设定的超时时间关闭连接),客户端处理完响应信息后再向服务器发送新的请求。
优点:在无消息的情况下不会频繁的请求,节省了网络流量,解决了服务端一直疲于接受请求的窘境
缺点:服务器hold连接会消耗资源,需要同时维护多个线程,服务器所能承载的TCP连接数是有上限的,这种轮询很容易把连接数顶满。
实例:WebQQ、Hi网页版、Facebook IM。
举个例子:
loop 1:
客户端向服务端发起一个请求
服务端没消息保存你的连接不断开,并不返回等待消息,等有消息给你返回
客户端等待…
服务器说我累了,我不想给你看着了,主动关闭连接
客户端说怎么可以给我断掉,于是再次发起请求
goto 1
二、WebSocket介绍
转自:https://www.cnblogs.com/jingmoxukong/p/7755643.html
WebSocket 是什么(what)?
WebSocket 是一种网络通信协议。RFC6455 定义了它的通信标准。
WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。
为什么需要 WebSocket (why)?
了解计算机网络协议的人,应该都知道:HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用了请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。
这种通信模型有一个弊端:HTTP 协议无法实现服务器主动向客户端发起消息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。大多数 Web 应用程序将通过频繁的异步JavaScript和XML(AJAX)请求实现长轮询。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。
三、使用WebSocket实现一个多人聊天室
四、使用WebSocket实现一个一对一聊天(单聊)