【问题标题】:how to detect incoming chat message?如何检测传入的聊天消息?
【发布时间】:2010-06-30 02:18:45
【问题描述】:

我正在使用 PHP、AJAX、MySQL 数据库和大量 jQuery 来构建基于 Web 的聊天系统(类似于 Facebook 聊天)的原型。我被困在如何“收听”传入的聊天...何时知道有人试图与我聊天...并且知道这是一个新聊天,而不是现有聊天。

现在,我正在轮询数据库表中是否有新插入,但似乎效率很低……服务器开销很大。

有没有办法接收通知,例如,在 MySQL 数据库的表中插入了一行,这样我就可以收到通知,然后查看插入的内容,而不是不断轮询?

如果有更好更有效的方式来建立这种一对一的聊天关系,请给我一些建议。

谢谢,赫里斯托

【问题讨论】:

  • 您可以使用 ajax 每隔 X 秒检查一次您的条目...如果输入的 id 较高的条目然后您收到的最后一条消息被输入,那么您可以使用新用户打开一个新窗口聊天或在给定的打开窗口上打印它,这取决于您的聊天如何工作以及您的数据库结构如何......以及您是否想要像信使或普通多用户聊天这样的东西。
  • ahhh.. 更高的 id... 好点,我没想到。我正在关闭时间戳,但这很难处理。谢谢,我会试试的。

标签: php mysql ajax chat ajax-polling


【解决方案1】:

您必须使用轮询,但您可以使用一种称为 Comet 的技术,该技术涉及长轮询,即发送一个 ajax 请求,该请求将由服务器持有,直到有聊天请求进入。

http://en.wikipedia.org/wiki/Comet_(programming))

【讨论】:

  • 这已经是我第五次听说彗星了……也许我该去看看了。谢谢。您能否详细说明 Comet 背后的逻辑?
  • @hristo,Comet 不是一项特定的技术。这是任何模拟通过网络推送数据的技术的名称。它和 Ajax 一样是一种技术。
  • 感谢您的解释。我去看看
  • +1 之前没听过这个词 - 听起来很有用。这可能有用:dashdashverbose.com/2010/02/…
【解决方案2】:

我认为轮询是 JavaScript 推送服务器端更改的唯一方式。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 2012-06-03
    • 2020-03-06
    • 2021-09-11
    • 2022-01-17
    相关资源
    最近更新 更多