我正在使用NodeJS作为后端并使用MongoDB开发一个聊天应用程序。我设计了用于存储每个客户端之间的消息的数据库。但就在那时,我不知道如何向客户端通知新消息。
如果客户端登录,则客户端可以发送API请求以获取最新消息。但是,如果客户端保持登录状态,并且传递了针对该客户端的新消息,则服务器会将这些消息记录在数据库中,但在请求之前无法通知它(通过重新加载页面或其他方式(。如何才能做到这一点?
我想不断地在服务器上轮询新消息,但这不是很多请求吗?我希望能够有一些更好的方法来实现这一点。我对网络开发还比较陌生,这是我的第一个项目。
我认为y可以使用套接字IO、XMPP协议,。。。用于实时web客户端。链路参考
最佳解决方案是使用websocket服务器从服务器接收消息
当然,您也可以使用它来发送消息。
如果您不想或不能使用websocket连接,可以使用SSE-Server站点事件
有关详细信息,请参阅此处:https://developer.mozilla.org/en-US/docs/Web/API/Server-sent_events/Using_server-sent_events
还可以不断地汇集消息。这是在websocket时代之前在许多聊天应用程序中使用的一种很好的老技术。它被称为";长池";,但SSE是目前最新、更方便、总体上更好的技术。有关详细信息,请参见此处:https://javascript.info/long-polling