【问题标题】:Is this the most efficient way to make live chat?这是进行实时聊天的最有效方式吗?
【发布时间】:2011-07-12 02:34:57
【问题描述】:

所以,我正在使用 php、mysql 和 jquery 进行群聊。那是我做的:

  1. 用户每秒都会收到新消息。
  2. 我通过 jquery 返回缓存文件。如果没有缓存文件,我会从 mysql 中提取消息,将其缓存并将此文件显示给用户。
  3. 如果会员发布消息,缓存文件正在被删除。

我能做些什么来提高效率吗?我相信这是最好的解决方案,不是吗?

【问题讨论】:

  • 我为这个项目喝彩,但为什么要重新发明聊天协议呢? Jabber/XMPP 可免费使用。
  • 每一秒都可能太多...
  • 彗星每 55-60 秒轮询一次。
  • 使用 COMET 推送方法,而不是从服务器轮询拉取;这样,浏览器只在有消息要获取时才获取消息,而不是每秒敲击服务器以发现它没有任何东西可以接收
  • @Mark Ba​​ker,从服务器推送数据会占用更多资源,>swerl.tudelft.nl/twiki/pub/Main/TechnicalReports/…

标签: php jquery mysql livechat


【解决方案1】:

您应该查看Node.js;这是进行此类聊天项目的一种非常强大的方式。

例如这个chat demo

Node.js 是一个强大的实时 Web 应用程序框架。服务器端应用程序是用 Javascript 编写的,因此您可以设想在客户端和服务器端之间共享代码(您可以共享类、共享模板……)

【讨论】:

  • node.JS 是服务器端的,它不会与客户端交互(除了标准的 web 协议),它与 php 的工作相同,只是一个循环架构,你应该让你的事实正确,它在服务器上是实时的,而不是在客户端上!
  • 是的,你是对的,我应该重新表述我的答案。我的意思是您可以设想在客户端和服务器端之间共享 javascript 代码。
【解决方案2】:

更新: 非常相似的问题 Ajax chat polling bandwidth efficiency

如果没有消息发布,则增加延迟而不是每秒,因此如果在 1 秒内没有检索到消息,则在 5 秒内执行下一个请求,如果没有检索到消息,则在 15 秒内执行下一个请求,依此类推开...直到您收到消息。

您可能需要检查jQuery periodical updater 执行此操作以及其他一些选项。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 2012-12-21
  • 1970-01-01
相关资源
最近更新 更多