客户如何知道基于网络的聊天应用程序是否有新消息?

时间:2020-08-31 07:26:01

标签: node.js api web server chat

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

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

我当时想不断地轮询服务器以查找新消息,但这不是很多请求吗?我希望可以有一些更好的方法来实现这一目标。我是Web开发的新手,这是我的第一个项目。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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