网络聊天 长轮询或其他方法?

Posted

技术标签:

【中文标题】网络聊天 长轮询或其他方法?【英文标题】:Web chat Long polling or another method? 【发布时间】:2011-11-11 18:23:21 【问题描述】:

我正在使用 xmpp 进行网络聊天。目前我使用了长轮询,但这是最好的方法吗?服务器端是 php 的,用其他语言也许有更好的解决方案,但是用 PHP?

【问题讨论】:

原生 html5 WebSocket(如果浏览器支持);) 【参考方案1】:

这是一个相当普遍的争论,并且有很多答案,具体取决于您的服务器功能和许可限制。

基本上,现在简短的回答是一个库,比如 Node.js——它基本上为您处理客户端-服务器关系问题(确定 Web 套接字的可用性、闪存和回退到 AJAX 长轮询)。

长答案是,就目前的浏览器采用状态而言,您必须考虑许多不同的意外情况——我是否需要一种技术,我是否想排除某些群体,开发是否具有成本效益X、Y 和 Z 组的解决方案?然后,为了在服务器端实现最高效率的所有可能性,您需要提供某种类型的套接字服务器,然后在客户端提供 AJAX、Flash 和 Web 套接字(甚至可能是 Java 来捕获最后 1%)。归根结底,它归结为值得支持谁(在企业环境中,您了解最终用户的整体能力,并且可以坚持使用一种协议;开放网络,您不能做出同样的假设)。

【讨论】:

您好,谢谢您的回答,但是如果我使用 Node.js,那么我需要在 node.js 中编写我的应用程序,还是我遗漏了什么? 本质上,Node.js 是“服务器端 javascript”。在此处查看带有 PHP 的 Node.js 示例:thechangelog.com/post/1422032099/…【参考方案2】:

您可以使用web socketsserver-side-events但这些技术只适用于现代浏览器。

【讨论】:

以上是关于网络聊天 长轮询或其他方法?的主要内容,如果未能解决你的问题,请参考以下文章

Rails 3:支持 IE 9 的长轮询或套接字

卡夫卡长轮询

ASP.NET 上的 WebSockets/长轮询 - 共享主机?

Libevent + Comet(长轮询/Http-Stream)

WebSockets 和长轮询

哪些特定用例需要 BOSH over WebSockets 和长轮询? [关闭]