【问题标题】:How could a client know if new messages are there for it for a web based chat app?客户如何知道基于 Web 的聊天应用程序是否有新消息?
【发布时间】:2020-12-19 07:39:33
【问题描述】:

我正在开发一个使用 NodeJS 作为后端并使用 MongoDB 的聊天应用程序。我设计了用于在每个客户端之间存储消息的数据库。但就在那时,我不知道如何通知客户端有新消息。

如果客户端登录,客户端可以发送 API 请求以获取最新消息。但是,如果客户端保持登录状态,并且传递了针对该客户端的新消息,则服务器将它们记录在数据库中,但在请求它之前无法通知它(通过重新加载页面或其他方式)。这怎么可能实现?

我正在考虑不断地轮询服务器以获取新消息,但这不会是很多请求吗?我希望可以有一些更好的方法来实现这一点。我对 Web 开发比较陌生,这是我的第一个项目。

【问题讨论】:

    标签: node.js api web server chat


    【解决方案1】:

    最好的解决方案是使用 websocket 服务器从服务器接收消息。
    当然你也可以用它来发送消息。

    如果您不想或不能使用 websocket 连接,您可以使用 SSE - 服务器站点事件。
    详情见这里:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events

    也可以经常池化消息。 这是在 websocket 时代之前在许多聊天应用程序中使用的很好的旧技术。 它被称为“长池化”,但 SSE 是当今最新、更方便且通常更好的技术。 详情见这里:https://javascript.info/long-polling

    【讨论】:

      【解决方案2】:

      我认为你可以使用套接字 IO、XMPP 协议,...用于实时 Web 客户端。 link reference

      【讨论】:

        猜你喜欢
        • 2021-06-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多