我在一个拥有大约 100 个活跃用户的系统中使用聊天。聊天是用 JavaScript 构建的,每隔四秒运行一个 ajax 问题到一个从数据库中获取数据的 php 脚本。当服务器上有大约 100 个在线用户时,服务器会变得非常慢。
有没有比使用包含 ajax 问题的 javascript 间隔更好的方法来创建聊天?
亲切的问候/ H
我在一个拥有大约 100 个活跃用户的系统中使用聊天。聊天是用 JavaScript 构建的,每隔四秒运行一个 ajax 问题到一个从数据库中获取数据的 php 脚本。当服务器上有大约 100 个在线用户时,服务器会变得非常慢。
有没有比使用包含 ajax 问题的 javascript 间隔更好的方法来创建聊天?
亲切的问候/ H
对 ajax 通信使用超时可能是您能做的最糟糕的解决方案。
我建议您使用 Websockets 或 AJAX Longpolling。有一个适用于 websockets 的 jquery 插件(优雅降级)。也许您甚至可能想尝试将这一切组合成一个简洁的框架(node.js 服务器端)的socket.io 。
这个答案为您提供了一些有关如何通过在服务器端安装 PHP 来实现这一点的信息。
这是使用单向请求的问题:客户端必须永久询问服务器以查看是否有一些新信息。结果,它给服务器增加了一些费用。请参阅wiki 上的投票。
一种解决方案是使用双向请求系统。这将允许服务器自己向客户端发送数据,而不仅仅是等待传入的查询响应。这将消除轮询原则并从服务器中扣除一些费用。
我看到了三个解决方案:
也许第三种解决方案设置起来最简单,因为它在您当前的架构中不包含新技术。