idea: 纯 http 上的双向通讯

纯 http 上的双向通讯

最近大概看了下 rxJava 的订阅者模式,而后突发奇想有没有可能用相似的思路实现纯 http 上的双向通讯web

A 是传统的 http 服务器服务器

B 是普通的客户端,假设咱们可以在 B 上启动一个简易的 http server 而且有办法实现公网访问websocket

而后经过相似事件订阅的方式实现双向通讯。异步

例:

要实现的功能:
B 是美团外卖商家端,当有用户下单时,B 可以收到推送socket

A 是美团服务器,当用户下单时,给 B 发请求通知 Bserver

实现思路:

A 存两个 model, 一个是订单 orders,一个是订单的订阅者 subscribers(订单和B这类客户端的订阅关系)对象

商家在 B 上登陆后,像 A 发一个请求,带着 B 的外网访问路径(外网 ip 或者一种自建的规则),以及 B 要订阅的
对象、对象规则和事件(好比 对象为 “订单”, 规则为 订单的商家字段为当前商家,事件为 “新建”)事件

当消费者下了一个订单,即新建了一个订单后, A 从 subscribers 表中找符合条件的订阅者,若是找到,就向
订阅者的 ip 发请求。ip


分割

或者说,若是在客户端上实现这个不太可能,或起一个 http server 很差保活,或费电于是意义不大的话,
把 A 和 B 都假设为服务器,在两台服务器间实现这样的基于 http 的双向通讯有没有意义呢?登录

与传统长链接实现的双向通讯相比,代价固然是 A 和 B 都须要启一个服务端口。好处是纯 http 实现,并且不须要维护长链接的开销,真正异步,仅须要发消息时创建 http 连接。

只是突发奇想,尚未深刻研究双向通讯、长链接、websocket 等的原理。欢迎懂的大大砸砖抛我~~🏃🏃🏃

相关文章
相关标签/搜索