Den*_*nov 5 rest software-design websocket
我们正在构建类似于 Messenger 的聊天应用程序。有必需的行为:
我的解决方案:
我应该处理的可能问题:
如果有一些优雅的方法来处理这种情况,你能给我建议吗?谢谢。
我会在解决您的任务时考虑以下几点:
客户端应用程序应该只知道要侦听的主题。而不是从其开始侦听的消息的 ID。
由服务器决定返回什么(即使时间也应该始终在服务器端进行跟踪)。
WebSocket 用作 STOMP 的传输(只是为了不重新发明轮子)。WebSocket 连接可以在客户端应用程序加载后打开,而不是在进入“侦听消息”状态时打开。但需要时应进行主题订阅。
您始终可以同时发送 GET 请求并启动 STOMP 订阅(几乎同时,延迟 1-2 纳秒)。这些总是应该在不同的承诺中进行处理。但我会按以下方式调整它们:首先,启动 STOMP 订阅,并传递带有订阅开始的初始时间戳的特定订阅消息;其次,执行 REST 请求以获取特定时间戳(从 STOMP 接收)之前的 TOPIC 的前 10-100 条消息。
获取最后 10 条消息(在订阅时刻之前)可以通过 REST 或 STOMP 方法传递:您始终可以对服务器端的订阅事件做出反应,并传递客户端特定的消息。
关于来自不同“数据通道”的多个相同消息的问题,很容易解决:您的客户端(希望不是 jquery,而是 Angular 或 React 或 Vue 或其他任何东西)将把所有数据存储在单个集合中一个控制器,通过消息 ID 进行过滤和检查以仅存储唯一的条目是很容易的。
但是,如果您的系统每秒生成数十万条消息:我想在这种情况下,基于 HTTP 的协议不是您的选择。
归档时间: |
|
查看次数: |
1238 次 |
最近记录: |