在由Node.js支持的Web应用程序中集成聊天function

我正在开发与Angular(客户端)和节点(服务器端)的Web应用程序。 我想集成一些社交function,包括聊天。 因此,用户可以发现附近的用户并向他们发送消息。 我想知道实现这个最好的方法。 我有一个想法,但在我看来,这是非常原始的,恐怕它可能会超载服务器。

  1. 我的想法是从客户端发送每一分钟,向服务器发送关于新消息的请求

  2. 服务器将在该用户的所有对话中查找新消息,检查每个对话的最后消息时间

  3. 服务器用新消息发回对话

  4. 如果客户端收到带有新消息的会话,则会显示通知,用户可以打开聊天。

  5. 一旦聊天被打开,向服务器发送新消息的请求每3秒发送一次(而不是1分钟)

存储在MongoDB中的用户对话示例

{'conversations': [ {'to':{'user-id':'101010', 'name':'Michela', 'location':'Alba Adriatica', 'img':'http://graph.facebook.com...jpg' }, 'last-msg':12345, //epoch 'msgs':[ {'from-me':'ciao come stai?', 'date':''}, {'from-you':'bene grazie, tu?', 'date':''}, {'from-me':'eh insomma..mi so rott lu cazz', 'date':''}, {'from-you':'dai poi vai alle Hawaii', 'date':''} ] }, ... ] } 

你真的应该了解websockets,以及他们如何提供信息的“推动和拉动”。

你build议的方法叫做“长轮询”。 是的,如果两者之间的时间不是很长,那么如果客户端数量增加,则服务器将承受沉重的负担。

使用websockets,你可以让服务器只与实际需要信息的客户端通信。

做一个谷歌search“node.js聊天应用程序教程”。 这并不困难。