如下:
php实现实时通信一般有两种方式:socket或comet。
socket是比较好的解决方案,问题在于不是所有的浏览器都兼容,服务器端实现起来也稍微有点麻烦。
comet(基于HTTP长连接的"服务器推")实现起来更加方便,而且兼容所有的浏览器。comet也有好几种实现方式,如iframe,httplongrequest等。
js用定时器周期性向服务器发送请求,模拟实时刷新。这里分长轮询和短轮询。
区别是:长轮询在没有数据更新时,不会立刻返回结果而是在服务器端hold住,直到有数据更新再返回结果。
短轮询无论数据是否有更新,都立刻返回结果。
这种做法服务器开销较大,2websokect,html5的新特性,可以在前后端建立双向通信
缺点是部分浏览器不支持。b/s架构的系统其实实现即使通信是比较有难度的,因为很难实现服务器推送
目前主流是用js轮询实现,但只要能通过代码减小服务器开销,也能达到比较好的效果。
HTML5 WebSocket实现消息推送有以下两种方法:长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 优点:消息即时到达,不发无用请求;管理起来也相对便。
Flash Socket:在页面中内嵌入一个使用了Socket类的 Flash 程序JavaScript通过调用此Flash程序提供的Socket接口与服务器端的Socket接口进行通信,JavaScript在收到服务器端传送的信息后控制页面的显示。 优点:实现真正的即时通信,而不是伪即时。
实现消息推送可以试一试极光。极光是国内领先的移动开发者服务提供商,近十年里,极光紧密围绕移动开发者的需求,打造了一系列针对开发者运营、增长及变现的产品。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)