我们的后端(rails)需要与某些第三方服务进行通信(我们无法控制它)。与此服务的所有通信都必须使用单个持久HTTP连接完成。
请求->
请求和<-
来自服务器的响应,这是当前的流程:
-> Login
<- Ok
-> Subscribe
<- Ok
<- Data
<- Data
<- Data
...
<- Data
订阅完成后,服务器会不时开始发送一些数据。这些是我们必须处理的实时更新。问题是我们找不到合适的方法来解决这个问题。
Subscribe
的回复标题非常简单
Connection → keep-alive
Content-Length → 183
Content-Type → text/xml
我查看了几个实现HTTP持久连接的gem,但似乎没有一个能够处理这种情况。
你知道一些可以处理这样的东西的宝石吗?否则,我不想重新发明从头开始实施HTTP客户端的轮子,因此最好的方案是将此功能集成到现有解决方案上。我该怎么办?
答案 0 :(得分:0)
我们最终在eventmachine之上构建了一个解决方案。 EM允许我们每次在连接上接收到一些数据时接收事件。然后将数据传递给http_parser.rb以解析传入的http消息,最后我们将消息排入sidekiq。