信息推送服务是什么意思,接受信息推送服务有什么好处?
主要介绍其中的五种实现方式:短轮询、Comet、Flash XMLSocket、Server-sent、WebSocket
1、短轮询
指在特定的的时间间隔(如每10秒),由浏览器对服务器发出HTTP request,然后由服务器返回最新的数据给客户端的浏览器。浏览器做处理后进行显示。无论后端此时是否有新的消息产生,都会进行响应
2、Comet
包括了长轮询和长连接,长轮询是客户端向服务器发送Ajax请求,服务器接到请求后hold住连接,直到有新消息才返回响应信息并关闭连接,客户端处理完响应信息后再向服务器发送新的请求;长连接是在页面中的iframe发送请求到服务端,服务端hold住请求并不断将需要返回前端的数据封装成调用javascript函数的形式响应到前端,前端不断收到响应并处理
3、Flash XMLSocket
在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的socket接口与服务器端的socket进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML 页面的内容显示
4、Server-sent
服务器推指的是HTML5规范中提供的服务端事件EventSource,浏览器在实现了该规范的前提下创建一个EventSource连接后,便可收到服务端的发送的消息,实现一个单向通信。客户端进行监听,并对响应的信息处理显示
5、WebSocket
WebSocket是HTML5下一种新的协议,是基于TCP的应用层协议,只需要一次连接,便可以实现全双工通信,客户端和服务端可以相互主动发送消息。客户端进行监听,并对响应的消息处理显示
针对自己系统的应用场景选择合适的推送方案才是合理的,因此最后简单说一下实现个性化推送的两种方式。第一种很简单,直接使用第三方实现的推送,无需复杂的开发运维,直接可以使用。第二种就是自己封装,可以选择如今较为火热的WebSocket来实现系统的推送。
关于第三方推送平台,极光推送,操作简单,稳定性高,送达率快
Thank you for your help!问题补充:laorer 写道应该是客户端主动定时去连服务器端,这种操作最好要让用户知道第二个问题应该是不是在用户连接到手机时,存到一个地方,或者内存中,或者数据库中但是现在的需求是当数据库有更新时就要主动发送一个更新通知给所有的客户端,然后客户端接到这个通知后才到服务器端取数据。你说的那是轮询,暂时还不想用这种方法,呵呵。问题补充:laorer 写道如果你只是想把消息发给现在在线的用户的话,那么客户端肯定需要一个监听程序,来监听来自服务器的消息,而服务端则在有新数据时,检查在线的用户并获取相关信息,然后发个消息给客户端的监听端口android是linux内核的,而且能连网络,那么肯定是要端口来连接的,这是我的推测,没有去找相关的资料如果是手机的话,是不是会发条短信给手机,毕竟这样不需要知道IP之类的东西浏览器请求服务时,肯定是浏览器定时去服务器请求的,才可能知道有没有新的内容关于在Android手机端开放监听端口,我再研究一下,值得借鉴。问题补充:laorer 写道如果你是自己来管理这些的话,那么当用户连接到服务器时,你需要把用户的这些内容写到服务器的文本或者数据库或者直接保存到内存中,然后用户断开后,把相应的用户信息删掉这样当数据库有新消息时,你可以从保存用户信息的地方得到所有的连线用户,发消息给用户的话,就是把消息发给用户的IP和监听端口,如果客户端有http服务的话,你也可以直接发送http信息到这个客户端的http服务上这只是我的想法,你做个参考吧
0条评论