这是关于在AngularJS中实现Socket.io的最佳实践的问题。
在关于这个主题的专门书中,我发现了一个简单的聊天实现。这是通过这种方式实现的:
我实施了它并发现了它的问题,但我不知道有效的解决方案。
情景:
效率低下的解决方案: - 在所有模块的每个控制器中实现Socket.on监听器并打破DRY原则! : - )
我对Angular中的rootScope了解一点,但这是最好的方式,或者在Angular中提供解决方案的最佳位置/方式......
所以如何拥有它:
是rootScope要考虑的内容,还是要使用AngularJS的其他功能?
答案 0 :(得分:1)
我认为最好的方法是在数据库中存储聊天消息。这是因为在 chats.client.controller 文件中, $ scope.message 变量初始化为null。因此,通过在数据库中存储所有消息,我们可以创建一个服务工厂,用于在用户返回聊天页面时查询所有消息以及最新消息。第一步是帮助存储消息。
对于第二步,我们可以在核心客户端控制器中创建一个侦听 chatMessage 事件的套接字。由于核心链接到所有模块,因此我们将能够在发布新消息时收到通知。