我正在考虑使用 websockets 和 http 构建一个 REST API,其中我使用 websockets 告诉客户端新数据可用或直接向客户端提供新数据。
以下是关于它如何工作的一些不同想法:
ws = 网络套接字
想法A:
- 大卫让所有用户
GET /users
- Jacob 添加用户
POST /users
- 一条 ws 消息被发送到所有客户端,其中包含新用户存在的信息
- David 收到 ws 的消息并拨打电话
GET /users
Idea B:
- 大卫让所有用户
GET /users
- David 注册以在发生更改时获取 ws 更新
/users
- Jacob 添加用户
POST /users
- 新用户由 ws 发送给 David
Idea C:
- 大卫让所有用户
GET /users
- David 注册以在发生更改时获取 ws 更新
/users
- Jacob 添加用户
POST /users
它得到 id 4
- David 通过 ws 收到新用户的 id 4
- David 获得新用户
GET /users/4
Idea D:
- 大卫让所有用户
GET /users
- David 注册以在更改完成后获取 ws 更新
/users
.
- Jacob 添加用户
POST /users
- David 收到一条 ws 消息,表明更改已完成
/users
- 大卫通过调用仅获得增量
GET /users?lastcall='time of step one'
哪种选择是最好的?有哪些优点和缺点?
这是另一个更好的“想法E”吗?
我们是否需要使用 REST 还是它足以处理所有数据?
Edit
为了解决数据不同步的问题,我们可以提供标头
“如果-未修改-自”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/If-Unmodified-Since
或“电子标签”
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/ETag
或者两者都带有 PUT 请求。
想法 B 对我来说是最好的,因为客户端专门订阅资源中的更改,并从那一刻起获取增量更新。
我们是否需要使用 REST 还是它足以处理所有数据?
请检查:WebSocket/REST:客户端连接? https://stackoverflow.com/questions/29145970/websocket-rest-client-connections/29149314
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)