轮询
概念:客户端接口定时向服务端发送请求获取消息的方式,服务器接到请求立马处理并且关闭请求连接,很容易导致出现资源浪费的情况;
1、http 短连接轮询方式=伪长链接保证消息的实时性
轮询:一个任务执行时,需要一直等待CPU的资源切换,如果等不到资源就一直等待;直到有资源可以利用;
使用轮询拉取消息有什么问题?
1、当用户轮询调用接口拉取消息,如果出现刚好此时消息拉取完,这时候有新的消息产生,我们定义这其中轮询的间隔时间为N,则新的消息需要等待N 后才能获取到;
解决以上问题:可以减少轮询的间隔时间。
但是会出现新的问题,如果每次轮询的间隔时间内有新的消息产生,那基本上没有问题,但是如果消息产生的时间比较长,就容易导致很多次的轮询过程中没有新消息获取到,这就出现了浪费链接获取资源的情况;
场景:Ajax轮询的方式获取用户抽奖数据
长轮询
概念:客户端通过向服务端发送请求,服务端hold住发送请求的链接,直到有新消息出现才返回响应给客户端消息,并且关闭链接,客户端处理完消息后,重新建立连接,获取消息消费;
能保证不会频繁请求服务端。
说明:其中长链接完全可以保证http请求消息实时性;
长链接
概念:客户端请求服务端建立连接之后,保持和服务端链接,并且消息源源不断的向客户端输送,
场景:使用webscoket技术实现网页即时通讯功能
Flash Socket
在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示,基本上已经废弃,不用flash了。