idea: 純 http 上的雙向通信


純 http 上的雙向通信

最近大概看了下 rxJava 的訂閱者模式,然后突發奇想有沒有可能用類似的思路實現純 http 上的雙向通信

A 是傳統的 http 服務器

B 是普通的客戶端,假設我們能夠在 B 上啟動一個簡易的 http server 並且有辦法實現公網訪問

然后通過類似事件訂閱的方式實現雙向通信。

例:

要實現的功能:
B 是美團外賣商家端,當有用戶下單時,B 能夠收到推送

A 是美團服務器,當用戶下單時,給 B 發請求通知 B

實現思路:

A 存兩個 model, 一個是訂單 orders,一個是訂單的訂閱者 subscribers(訂單和B這類客戶端的訂閱關系)

商家在 B 上登錄后,像 A 發一個請求,帶着 B 的外網訪問路徑(外網 ip 或者一種自建的規則),以及 B 要訂閱的
對象、對象規則和事件(比如 對象為 “訂單”, 規則為 訂單的商家字段為當前商家,事件為 “新建”)

當消費者下了一個訂單,即新建了一個訂單后, A 從 subscribers 表中找符合條件的訂閱者,如果找到,就向
訂閱者的 ip 發請求。


分割

或者說,如果在客戶端上實現這個不太可能,或起一個 http server 不好保活,或費電因而意義不大的話,
把 A 和 B 都假設為服務器,在兩台服務器間實現這樣的基於 http 的雙向通信有沒有意義呢?

與傳統長連接實現的雙向通信相比,代價當然是 A 和 B 都需要啟一個服務端口。好處是純 http 實現,而且不需要維護長連接的開銷,真正異步,僅需要發消息時建立 http 鏈接。

只是突發奇想,還沒有深入研究雙向通信、長連接、websocket 等的原理。歡迎懂的大大砸磚拋我~~🏃🏃🏃


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM