【问题标题】:What's the best way to retrieve messages from the server for a chat application为聊天应用程序从服务器检索消息的最佳方式是什么
【发布时间】:2015-01-08 20:47:16
【问题描述】:

我正在从头开始编写一个聊天应用程序,并试图找出从服务器实时检索消息的最佳方式。我做了相当多的研究,并提出了这个:我可以使用网络套接字,而且我之前已经成功地看到过它。我可以使用长轮询,但我想知道这是否会给服务器带来更大的压力,或者可能不适合聊天应用程序。我可以每秒轮询一次服务器,但这似乎是在浪费带宽。建议?谢谢!

【问题讨论】:

    标签: javascript websocket socket.io long-polling server-push


    【解决方案1】:

    出于多种原因,websocket 协议非常适合聊天应用程序。

    • 正如您已经确定的那样,连续轮询服务器是一种资源浪费。
    • 使用传统 HTTP 需要使用庞大的标头,这会浪费宝贵的带宽。 Websockets 允许精简消息传递。
    • 对于您的应用程序来说最重要的是,与 HTTP 不同,websocket 是双向的,这意味着您的服务器可以独立地向您的聊天客户端发送消息。使用 HTTP,所有通信都必须由客户端发起,并且您仅限于请求-响应类型的通信。使用 websockets,如果您的客户端在您的聊天服务上收到来自其他用户的消息,服务器可以立即独立地将该信息转发给预期的接收者。

    所以回答你的问题。您绝对应该使用网络套接字。由于您缺少传统的标头,因此在格式化通过连接发送的消息时,您将不得不做一些工作,但效率非常值得您花费最少的精力来设置您的消息模型。

    【讨论】:

      【解决方案2】:

      什么?您是否需要在专用服务器上往返数据库? 我会推荐使用 JavaScript 或 jQuery 的 Ajax,但我喜欢自己编写 JavaScript 编码。 如果您显示的数据来回匹配,我可能会使用 MySQL。

      例如,如果与当前匹配,则查询最后一个已知查询,则不会更新。 如果不匹配,则从最后一个循环向上到租匹配如果按类型排序,则为 DESC。无论如何... 希望这可以帮助您决定应该使用什么。

      虽然这在游戏、博客、论坛、使用 MySQL/SQL 的聊天中很常见。

      【讨论】:

        猜你喜欢
        • 2011-11-28
        • 1970-01-01
        • 2021-09-24
        • 2018-10-14
        • 2016-05-21
        • 2014-05-14
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        相关资源
        最近更新 更多