meanjs 聊天实现:即使离开聊天模块也不会丢失消息

meanjs chat implementation: not losing messages even if leaving chat module

这是一个关于在 AngularJS 中实现 Socket.io 的最佳实践的问题。

在有关该主题的专着中,我找到了一个简单的聊天实现。是这样实现的:

  1. Socket.io 包裹在服务中
  2. 聊天控制器使用此服务来更新范围变量
  3. 视图更新为显示消息的范围变量

我实现了它并发现了它的问题,但我不知道有效的解决方案。

场景:

  1. 用户 A 正在与 B 聊天
  2. B 将聊天模块留给应用的另一个模块
  3. 此时A向B发送消息
  4. B 丢失消息,返回聊天模块时不会收到消息:仅实现了聊天模块 Socket.on!

低效的解决方案: - 在所有模块的每个控制器中实施 Socket.on 侦听器并打破 DRY 原则! :-)

我对 Angular 中的 rootScope 略知一二,但在 Angular 中,这是最好的方法还是在哪里/如何最好地提供解决方案...

那么如何拥有它:

  1. B 访问应用程序的任何模块并且 Angular 接收并保留发送给 B
  2. 的所有消息
  3. 回到聊天模块,B有所有可用消息

是rootScope要考虑什么,还是要用到AngularJS的其他特性?

我认为最好的方法是将聊天消息存储在数据库中。这是因为在chats.client.controller文件中,$scope.message变量被初始化为null。因此,通过将所有消息存储在数据库中,我们可以创建一个服务工厂,用于在用户返回聊天页面时查询所有消息以及最新消息。第一步是帮助存储消息。

对于第二步,我们可以在核心客户端控制器中创建一个套接字来侦听 chatMessage 事件。由于核心链接到所有模块,我们将能够在发布新消息时得到通知。