我正在构建一个移动应用程序,其中 UI 上的下拉手势启动现有数据/帖子的更新(如果有的话,也会检索新帖子,但这不是这里的重点(。服务器是无状态的,这意味着没有会话。
如果数据库中的帖子已经更新,如何让前端知道哪些帖子需要更新?我能想到的唯一方法是将所有检索到的帖子的 ID 列表发送到服务器,并让它检查自获取以来是否有任何帖子被修改过。
然而,这似乎效率低下,因为在某些极端情况下,用户可能已经堆叠了数百个帖子,而且很可能只有很少或没有帖子需要更新。发出数百个数据库请求可能是一个巨大的开销。
至少有 2 种方法可以做到这一点
-
长轮询
- 客户端请求服务器以获取新信息。
- 服务器保持连接打开,直到有一些新数据要发送。
- 一旦服务器获取数据,它就会将其发送到客户端并关闭连接。
- 然后,客户端发送新的信息请求。
- 这是一个持续的过程。
-
网络套接字
- 创建一个 websocket 连接,使其保持打开状态。
- 服务器会在任何更新到来时推送它们。
两种情况的问题
- 可能需要大量时间才能实现生产就绪。
- 它们都要求服务器了解数据库中的任何更改。这也可能很棘手