使用req / resp和pub / sub要求设计REST API

时间:2016-05-19 09:22:10

标签: rest publish-subscribe

现在我正在为分布式系统设计REST接口。它是一个客户端/服务器架构,但有两种消息交换模式:

  • req / resp:最RESTful方法,它是一个CRUD接口,用于访问/创建/修改/删除服务器中的对象。
  • pub / subs:这是我的主要疑问。我需要服务器尽快向客户端发送异步通知。

在网上搜索我发现一个解决方案可能是在服务器和客户端中实现REST服务器:Publish/subscribe REST-HTTP Simple Protocol web services architecture?

另一种选择是实现阻塞REST,因此客户端不需要在特定端口中监听:Using blocking REST requests to implement publish/subscribe

我想知道你会考虑哪些选项来实现像这样的接口。谢谢!

1 个答案:

答案 0 :(得分:2)

Web Sockets可以为该服务提供一个渠道,以实时更新Web客户端。还有诸如http long polling之类的其他技术,其中客户端发出“阻止”请求(如您所指),其中服务将请求保留的时间少于超时(例如50秒),并在请求时写入响应有数据。 Web客户端立即发出另一个请求。此循环创建了一个连续的通道,可以从服务器向客户端“发送”消息,但是可以从客户端(防火墙,代理等)启动消息。

socket.iosignalR之类的库以及许多其他库,它们包装了这种逻辑,甚至从websocket退回,直到为您优雅地长时间轮询并提取细节。

我建议编写一些示例Web套接字和long polling examples只是为了理解,然后依靠上面提到的库来正确处理。