我目前正在尝试制作一个针对 1000-1500 个用户的聊天应用程序。当前发生的情况是,一旦我的网页加载,我每秒都会发出一个 ajax 请求,以检查数据库中是否有任何新内容。我想知道这是否是标准做法,或者是否有更有效的方法可以在插入发生时以某种方式由服务器通知。
问问题
73 次
2 回答
3
使用 WebSocket。或者至少是 AJAX 轮询。每秒从 1500 个客户端发出一个请求很可能会杀死您的服务器。
看看http://socket.io/如果你愿意为你的堆栈引入一些新东西。但是,如果您仅限于 PHP,则可以使用 PHP websocket 解决方案。
于 2013-01-29T08:31:47.387 回答
1
您的方法是一种称为Polling的标准方法。根据客户端的数量,对于具有最新硬件的服务器来说,这应该是完全可以的(通过该HEAD
请求AJAX
通过代码指示状态HTTP status
)。
另一种选择——正如 Jan 所指出的——称为Pushing。
- 优点:对服务器的请求要少得多。
- 缺点:需要的技术可能会或可能不会由您的客户的浏览器提供。
如果您选择第二种方法,请查看Server-Sent Events(W3C 草案)。
该规范定义了一个 API,用于打开 HTTP 连接以接收来自服务器的 DOM 事件形式的推送通知。该 API 的设计使其可以扩展为与其他推送通知方案(如推送 SMS)一起使用。
于 2013-01-29T08:34:38.580 回答