问题描述
我分配给自己的任务是为我的课程实现聊天应用程序 (1:1)。在各种选项中,我使用 SSE 进行实时聊天。从示例项目中,我能够实现两个人之间的非持久聊天客户端。在每个示例中,他们使用 js object
和 array
来存储 res
对象,并通过迭代它们向特定用户发送事件。但是在实现实时聊天应用程序时,用户可能急剧增加所以不好耗尽服务器资源。
-
SSE+setInterval
-
长轮询
-
网络套接字
问题
- 如何仅在新消息到达特定用户时触发
res.write
? - 当用户增加时,SSE+setInterval 或 longpolling+setInterval 是否会降低性能?
- 还有什么设计模式可以实现这个功能?
解决方法
简单地使用websocket。 它快速、方便且简单。 要在两个用户都登录时实时发送消息,请在 users Array 或 Map 中通过 id 查找第二个用户,并将接收到的消息发送到他的 websocket。 如果您为断开连接的用户(在内存/数据库/redis 中)缓冲了消息,请在用户连接时检查它,如果存在则发送。