我们正在构建类似于 Messenger 的聊天应用。需要满足以下要求:
- 用户登录
- 用户应该看到最后 N 条消息,并能够加载更早的消息
- 新消息也应该被追加
- 我想使用 WebSockets 结合 REST 来实现此目的。我的想法是客户端应用程序通过消息 ID 决定需要哪些消息。因此,REST 将用于初始获取消息和获取旧消息。
- 新消息将通过 WebSockets 接收
- 应用程序开始订阅 WebSocket 频道以获取新消息并发送请求以获取没有初始消息 ID 的旧消息
- 调用 GET 请求后,有可能会有新消息到达并存储在数据库中
- 客户端应用程序开始订阅 WebSocket 频道,因此消息将通过 WebSockets 接收
- GET 请求不知道这条消息,会获取包含这些新消息的最后 N 条消息,从而导致客户端应用程序具有重复记录并需要过滤这些消息