加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营 > 正文

目前web可以实现即时消息的方式介绍

发布时间:2018-08-23 13:12:35 所属栏目:运营 来源:站长网
导读:烈火建站学院文档 1.反转AJAX:服务流应用到AJAX,就是所谓的反转AJAX 或者COMET 。它使得服务器在某事件发生时可以发送消息给客户端,而不需要客户端显式的请求。目标在于达到状态变化的实时更新。COMET使用了HTTP/1.1中的持续连接的特性。 页面中嵌入ifr

  烈火建站学院文档

  1.反转AJAX:服务流应用到AJAX,就是所谓的反转AJAX 或者COMET 。它使得服务器在某事件发生时可以发送消息给客户端,而不需要客户端显式的请求。目标在于达到状态变化的实时更新。COMET使用了HTTP/1.1中的持续连接的特性。
  页面中嵌入iframe iframe的地址指向一个长连接
  即时性最高, 目前Google的gtalk就是采用的这种方式,而且使用htmlfile巧妙的解决了ie浏览器一直显示下载条的问题.
  不过问题也很严重.在IBM的帮助文档上也说明了不要在同一客户端同时使用超过两个的 HTTP 长连接,因为 HTTP 1.1 规范中规定,客户端不应  该与服务器端建立超过两个的 HTTP 连接,否则第三个页面就会卡在那
  而且网上有文章说服务器应用程序CPU使用率是拉取方式 的7倍(ps:好像apache对这个支持的也不太好)

   2.长时间轮询:也就是所谓的异步轮询,这种方式是纯服务器端推送方式和客户端拉取方式的混合。它是基于BAYEUX协议的。 这个协议遵循基于主题的发布——订阅机制。在订阅了某个频道后,客户端和服务器间的连接会保持打开状态,并保持一段事先定义好的时间。如果服务器端没有事 件发生,而发生了超时,服务器端就会请求客户端进行异步重新连接。如果有事件发生,服务器端会发送数据到客户端,然后客户端重新连接。
  其实也差不多 ,主要是在服务器端阻塞 ,等有新数据或者超时后返回 ,客户端收到信息后重新发起请求
  不过及时性高些,  网易blog应该就是用的这种方式,之前我还以为是单纯的轮询的,测试了一下才发现还用到长轮询了
  http://61.135.253.223/cometd?message=[{"channel":"/meta/connect","clientId":"asdfasdf","connectionType":"long-polling","id":"1","callback":"testcb"}]&56ee6-e806eee-be79-d8d01a6f7

  3.通过js控制HTTP轮询拉取方式:
  个人感觉如果一定要实现这个功能的话,这个最可行的办法.
  网上对这种方法的缺点说明一般是:如果拉取的时间间隔大于数据更新的时间间隔,就会发生一些数据的遗失。而如 果小于数据更新的时间间隔,网络性能就会受到影响.
  这里应该是说的那种即时性要求很高的应用.而我们这里不需要那么及时,10分钟应该就可以满足要求.所有性能上应该没有什么问题.(300人同时在线,每秒的并发访问也不会太大,毕竟不可能同时去请求.高峰期能有个20/s 就算不错了 )

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读