问题描述
我想做一个让用户评论和发送消息的应用。但是,这些事件的通知必须立即发送,就像任何其他社交媒体或聊天应用程序一样。这就是我的想法:
- Web 前端:Angular,移动:Ioinc with Angular
- 后端:Node、Mongo
现在,这就是我想实现实时通知的方式。
现在,这种方法的困惑在于:
- 数以百万计的套接字连接是否可以大规模运行?如果没有,实现这种发布-订阅系统的方法是什么?我需要从头开始,而不是使用 Firebase。
- 如果用户在后台收到消息时离线怎么办?如果套接字未打开,他将如何获取消息?有没有办法使用Kafka来做到这一点?如果您对此有一些想法,请解释一下。
这是正确的方法吗?如果没有,你能建议什么是合适的吗?
解决方法
- 数以百万计的套接字连接是否可以大规模运行?如果没有,实现这种发布-订阅系统的方法是什么?我需要从头开始,而不是使用 Firebase。
是的,它可以大规模运行,只是您必须制作这样的架构。你可能会觉得这很有用
- 如果用户在后台收到消息时离线怎么办?如果套接字没有打开,他将如何获取消息?
如果套接字未打开或用户离线,则客户端套接字将断开连接。此时,将不会收到通知,每当用户上线时,您都必须进行 API 调用以获取通知并再次连接到套接字以进行进一步操作。
有没有办法使用 Kafka 来做到这一点?
是的,你也可以用 Kafka 来做。您将需要消费者 API(订阅者)和生产者 API(发布者)
https://kafka.apache.org/documentation/#api
https://www.npmjs.com/package/kafka-node
Sending Apache Kafka data on web page