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 等的原理。歡迎懂的大大砸磚拋我~~🏃🏃🏃

相關文章
相關標籤/搜索