【问题标题】:how to make a popup chat application without using ajax如何在不使用 ajax 的情况下制作弹出式聊天应用程序
【发布时间】:2013-06-08 14:59:16
【问题描述】:

我创建了一个约会网站,我在其中使用了一对一的聊天应用程序,例如 facebook。当一个用户向另一个用户发送任何消息时,它会显示在他们的弹出聊天框中,但我已经使用 ajax 完成了此操作。我使用javascript setInterval 函数在每个间隔中运行。但我认为流程不是优化的。我不想每次都向服务器发出不必要的请求,而是只在该用户有新消息时触发。有没有其他方法可以做到这一点,或者像 facebook、gmail 这样的大网站使用的任何其他协议?

【问题讨论】:

  • 通常的方法是设置您的服务器以保持连接打开,直到它有数据要发送。这就是 gmail 所做的(或至少曾经做过;不确定它是否仍然如此)。基本思想是:发出 AJAX 请求,如果数据可用,服务器立即发送数据,否则尽可能保持请求打开。当客户端取回数据时,它会立即发送一个新的请求。

标签: php javascript ajax


【解决方案1】:

您可以使用WebSockets 执行此操作,但这需要服务器实现和支持它的网络浏览器。

另一种技术是使用Long Polling,但同样,这需要在客户端和服务器上工作。优点是这是一种跨浏览器兼容的技术。

【讨论】:

  • 谢谢乔希。之前没用过,让我试一下实现一下。
【解决方案2】:

我同意 Josh 的观点,WebSockets 值得研究,但是如果您无权访问服务器,则可以在后端使用类似 Firebase 的东西。

https://www.firebase.com/index.html

【讨论】:

    【解决方案3】:

    读入Long Polling。这是facebook使用的。基本上,您的客户端会进行一次 Ajax 调用,并且在有数据推送给它之前不会返回任何内容。我很确定它需要一些自定义服务器配置,因此如果您在共享主机上进行开发,它不会削减它。如果您想要效率,那么长轮询将是正确的,尽管更复杂的方法。

    【讨论】:

      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-03
        • 1970-01-01
        • 1970-01-01
        • 2013-11-24
        • 1970-01-01
        • 2022-08-09
        • 1970-01-01
        相关资源
        最近更新 更多