在由Node.js提供支持的Web应用程序中集成聊天功能

时间:2016-02-16 11:08:23

标签: node.js mongodb chat

我正在开发一个带有Angular(客户端)和Node(服务器端)的Web应用程序。我想整合一些社交功能,包括聊天。因此,用户可以发现附近的用户并向他们发送消息。 我想知道实现这个的最佳方法。我有一个想法,但在我看来非常原始,我担心它会使服务器超载。

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

  2. 服务器在其中查找新消息 该用户的所有会话,检查最后一条消息 每次谈话的时间

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

  4. 如果客户端收到新消息的对话,a 通知出现,因此用户可以打开聊天。

  5. 一旦聊天打开,请求到服务器 新邮件每3秒发送一次(而不是1分钟)

  6. 存储在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':''}
               ]
       },
       ...
     ]
    }
    

1 个答案:

答案 0 :(得分:1)

您真的应该了解websockets以及它们如何提供“推拉”信息。

你所建议的方法称为“长期投票”。是的,如果时间间隔不长,如果客户端数量增加,服务器将处于高负荷状态。

使用websockets,您可以让服务器仅与实际需要信息的客户端进行通信。

谷歌搜索“node.js聊天应用程序教程”。这并不困难。