【问题标题】:Chat heartbeat slows down server聊天心跳减慢服务器
【发布时间】:2013-04-10 13:51:58
【问题描述】:

我在一个拥有大约 100 个活跃用户的系统中使用聊天。聊天是用 JavaScript 构建的,每隔四秒运行一个 ajax 问题到一个从数据库中获取数据的 php 脚本。当服务器上有大约 100 个在线用户时,服务器会变得非常慢。

有没有比使用包含 ajax 问题的 javascript 间隔更好的方法来创建聊天?

亲切的问候 /H

【问题讨论】:

  • 每秒 25 个请求并不算多。您是否正在缓存对 AJAX 请求的响应,而不是每次都访问数据库?即使访问数据库也不应该是一个巨大的开销。这只是一个非常低功率的服务器吗?失败只是表明服务器端的某些工程非常缓慢。
  • 你们都看过网络套接字/反向 ajax 吗?我从未构建过聊天客户端,但我想知道按需推送而不是持续轮询是否会更好。
  • 我们正在升级我们的服务器 atm,所以我们会看看这是否有什么不同。我一直在考虑网络套接字。你知道使用 web sockets 的好教程吗?
  • WebSockets 是要走的路!查看 Phil Leggetter 的实时框架指南。 leggetter.co.uk/real-time-web-technologies-guide 如果您是 C#ér,请查看 XSockets.NET、SuperWebSocket 或 Fleck。否则菲尔斯指南会帮助你!

标签: javascript ajax chat


【解决方案1】:

这是使用单向请求的问题:客户端必须永久询问服务器以查看是否有一些新信息。结果,它给服务器增加了一些费用。请参阅 wiki 上的 Polling

一种解决方案是使用双向请求系统。这将允许服务器自己向客户端发送数据,而不仅仅是等待传入的查询响应。这将消除轮询原则并从服务器中扣除一些费用。

我看到了三个解决方案:

  • Java 小程序
  • Flash 应用程序
  • 用 websocket 连接替换 ajax 查询

也许第三种解决方案设置起来最简单,因为它在您当前的架构中不包含新技术。

【讨论】:

    【解决方案2】:

    对 ajax 通信使用超时可能是您能做的最糟糕的解决方案。

    我建议您使用 Websockets 或 AJAX Longpolling。有一个适用于 websockets 的 jquery 插件(优雅降级)。也许您甚至可能想尝试socket.io,它将所有这些组合成一个简洁的框架(node.js 服务器端)。

    This answer 为您提供了一些有关如何通过在服务器端安装 PHP 来实现这一点的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-25
      • 1970-01-01
      • 2018-06-05
      • 2015-11-05
      • 2011-12-01
      • 2014-11-13
      相关资源
      最近更新 更多