网络聊天 长轮询或其他方法?
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 sockets
或server-side-events
。 但这些技术只适用于现代浏览器。
【讨论】:
以上是关于网络聊天 长轮询或其他方法?的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 上的 WebSockets/长轮询 - 共享主机?