【问题标题】:What's an efficient way to deal with a JS chat box?处理 JS 聊天框的有效方法是什么?
【发布时间】:2011-05-03 15:06:13
【问题描述】:

假设我想写一个 AJAX 聊天框,只是一些简单的东西,我写了一些文本,然后发布。让我们不必太担心框中的用户名。

第一直觉告诉我只需要编写一个表并将数据发布到其中,然后每隔几秒查询一次。

让我们假装这不是 2011 年,计算机便宜,我们可以接受每 5 秒更新一次的缓慢延迟聊天框,或者用 SQL 风暴减慢整个服务器的速度。

有哪些替代方案?我可以用 XMPP 做点什么吗?如果除了我最喜欢的服务器端语言(和一些 SQL)之外什么都没有怎么办?我可以以某种简洁的方式使用消息哈希吗?我可以做些什么来限制请求的数量?

我正在寻找的是一个伟大的计划,用于编写基于网络的聊天框背后的软件,它非常节省资源且非常灵活。我确信我们正在为我们已经拥有的聊天室在 SO 上做一些整洁的事情。

【问题讨论】:

  • 很抱歉让您失望了,但是在此处查看聊天时,您会发现 XHR 每隔一秒左右就会发生一次。
  • 哦,我明白了,也许我没有说清楚。我只是为此寻找一个好的标准模式,它不会从表中选择所有记录并每 1 秒删除一次。让那些每一秒的 XHR 获得最佳影响的好方法。
  • 嗯,当然不是选择每条记录。您只选择在之前的请求和现在之间发布的那些。
  • 对,我只是在寻找一种很酷/新/有趣的方式来做到这一点。我很好奇在标准约定之外是否有一些真正有趣的东西,或者使用这种方式是否存在其他方法所没有的问题,或者甚至可能使可用性更好的很酷的想法。

标签: javascript performance chat chatroom


【解决方案1】:

你的问题是你时不时地轮询。您真正想要的是与流数据的持续连接。

您可以尝试使用Comet 方法 - 一种流式连接,您可以保持打开状态以向下发送聊天消息。

还有一个叫做长轮询的技巧——你保持连接打开直到你收到一条新消息,然后关闭它并开始一个新的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-03-14
    • 1970-01-01
    • 2021-04-15
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多