1

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

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

长轮询的好处是它很容易实现,我可以返回我想要的任何数据(一个自定义的 JSON 对象,其中包含更新页面所需的数据)。

我对 WebSockets 的担心是 PHP 中没有原生库,所以你必须在不同的 3rd 方库之间购物,而且概念似乎更复杂,通道和订阅是什么,你有什么。

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

  1. Long Polling 的性能是否比 Websockets 差很多?如果没有,那么我的决定很容易!

  2. PHP 是否有一个非常简单的 Websocket 服务器?还是这个概念很简单,我可以自己写?(Mozilla 有一个关于编写客户端的非常简单的教程,但没有在服务器上)。

4

2 回答 2

2

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

websockets 节省开销的另一个地方是,一旦建立连接,就不需要不断的请求和响应。Zombie websocket 连接在带宽和 CPU 方面基本上是免费的。

最后,我认为长轮询不会更容易实现。由于 websocket 旨在完全按照您的意愿进行设计,因此我认为利用现有的 websocket 包实际上会为您节省一些代码行。如果您想使用 PHP,我会查看Ratchet(功能丰富)或phpwebsocket (精简版)。

于 2013-08-12T05:42:38.910 回答
0
  1. 长轮询绝对比 Werbsockets 差得多。
  2. 不建议将任何 websockets 库与 PHP 一起使用,特别是用于聊天应用程序。

我建议改用Python 、Ruby 或 Node.js。

于 2013-08-09T15:43:24.543 回答