长轮询或WebSockets

时间:2013-08-09 15:26:28

标签: php websocket phpwebsocket

我正在编写网络聊天,您可以同时与屏幕上的人进行多次一对一对话。 (基本上,就像个人信使,没有群聊)。

我的技术选项似乎是Long Polling和WebSockets,我正在尝试选择。

Long Polling的优势在于它实现起来非常简单,我可以返回我想要的任何数据(带有更新页面所需数据的自定义JSON对象)。

我对WebSockets的恐惧是因为PHP中没有本地库,所以你必须在不同的第三方之间购物,概念看起来更复杂,有渠道和订阅的东西以及你有什么。

浏览器兼容性对我来说不是问题。

  1. Long Polling的性能是否比使用Websockets更差?如果不是,那么我的决定很简单!

  2. 是否有一个非常简单的PHP Websocket服务器?或者这个概念是如此简单我可以写自己的? (Mozilla在编写客户端时非常简单tutorial,但在服务器上却没有。)

2 个答案:

答案 0 :(得分:2)

假设您的长轮询方案涉及由与前端相同的Web服务器托管的端点,这将意味着应用程序的每个用户有两个活动连接,因此您基本上可以减少一半的用户数量。您的websocket服务器将在不同的端口上运行,并且可以绕过您的Web服务器,因此连接是使用websockets节省的大量开销。

另一个节省开销的网页框架是,一旦建立了连接,就不需要持续的请求和响应。 Zombie websocket连接在带宽和CPU方面基本上都是免费的。

最后,我不认为长时间的民意调查会更容易实施。由于websockets的设计完全符合您的要求,我认为利用现有的websocket包实际上可以为您节省一些代码。如果你想使用PHP,我会看Ratchet(功能丰富)或phpwebsocket(精简版)。

答案 1 :(得分:0)

  1. 长轮询绝对比Werbsockets更差。
  2. 建议不要在PHP中使用任何websockets库,特别是聊天应用程序。
  3. 我建议改用 Python,Ruby或Node.js