我正在编写Web聊天,您可以同时在屏幕上与人进行多次一对一对话 . (基本上,就像个人信使,没有群聊) .
我的技术选项似乎是Long Polling和WebSockets,我正在尝试选择 .
Long Polling的好处是它很容易实现,我可以返回我想要的任何数据(一个自定义的JSON对象,其中包含更新页面所需的数据) .
我对WebSockets感到害怕的是PHP中没有本地库,所以你必须在不同的第三方之间购物,概念看起来更复杂,有渠道和订阅的东西以及你有什么 .
浏览器兼容性对我来说不是问题 .
-
Long Polling的性能是否比使用Websockets更差?如果不是,那么我的决定很简单!
-
是否有一个非常简单的PHP Websocket服务器?或者这个概念是如此简单我可以写自己的? (Mozilla在编写客户端时非常简单tutorial,但在服务器上却没有) .
2 回答
假设您的长轮询方案涉及由与前端相同的Web服务器托管的 endpoints ,这将意味着应用程序的每个用户有两个活动连接,因此您基本上可以将支持的用户数减少一半 . 您的websocket服务器将在不同的端口上运行,并且可以绕过您的Web服务器,因此连接是使用websockets节省的大量开销 .
另外,websockets节省开销的地方是,一旦 Build 连接,就不需要持续的请求和响应 . Zombie websocket连接在带宽和CPU方面基本上都是免费的 .
最后,我不认为长时间的民意调查会更容易实施 . 由于websockets的设计完全符合您的要求,我认为利用现有的websocket包实际上可以为您节省一些代码 . 如果你想使用PHP,我会看Ratchet(功能丰富)或phpwebsocket(lite) .
长轮询比Werbsockets差得多 definitely .
不建议在PHP中使用任何websockets库,特别是聊天应用程序 .
我建议改用 Python, Ruby or Node.js .