我计划开发一个基于Web的聊天应用程序,它接收ReSTful请求,将它们转换为XMPP并将它们传送到XMPP服务器.
对于这种基于聊天的应用程序使用websockets看起来很有希望,因为事件(或响应)可以异步传递.但是,如果我使用websockets作为从浏览器传输请求的底层协议,这仍然可以被视为ReSTful设计吗?如果是,那么在websocket消息中如何表示URI,动词(GET,POST ...)参数?将它们包装在xml/json中并发送它?
此外,ReSTful架构声明服务器上不会存储任何会话状态.但是在这种情况下,当创建XMPP客户端会话时,此会话的状态将存储在服务器上(违反无状态约束)
我想以双向流方式开发客户端 - 服务器应用程序.
什么是更合适的技术 - grpc或websocket?
我正在开发一个 Xamarin 应用程序,该应用程序使用用 Python 烧瓶编写的 REST API。
Xamarin 应用程序提供虚拟购物清单,用户可以在其中协作购买共享清单上的商品。
为了改善用户体验,我希望能够主动通知用户列表中已完成的项目。
通知由 API 存储在关系数据库中,并有一个标志,指示用户是否已收到通知。
API 有一个端点GET /users/:user_id/notifications/,用于查询数据库中的通知并返回带有这些通知的 JSON 响应。
同步轮询会产生大量的 http 请求
API 服务保持无状态,使用负载均衡器更容易进行水平扩展
API 有一个端点POST /users/:user_id/notifications/register,它在客户端和 API 之间创建 websocket 连接。
连接存储在一个全局数组中,其中每个条目将一个客户端 ID 映射到一个 websocket 连接。
创建新通知时,端点通过将通知的所有者 ID 与字典条目进行比较,在连接字典中进行查找。通知通过 websocket 发送给适当的用户。
通知像第一种方法一样存储在数据库中。
当用户调用端点时,将首先建立一个新的 websocket 连接,成功后 API 将所有看不见的通知从数据库发送给用户。
API 使用 …
我们有一个用例,我们有两个微服务,Microservice A将一个长时间运行的任务推送到Microservice B.
Microservice B开始处理任务并不断更新任务的状态。现在Microservice A必须不断轮询Microservice B任务状态的更新。
我们当前的设置中没有队列。
于是,我们想到了一个创造web socket之间Microservice A并Microservice B让微服务B能推的状态更新Microservice A。Web sockets与持续轮询相比,这种设计是否会违反任何原则,并且会是更好的方法吗?