推送技術-icomet學習和分析
阿新 • • 發佈:2019-01-23
1 iComet 在Web系統和移動應用系統中的角色
2 iComet 的工作流程
3實現原理
3.1關鍵技術
使用libevent構建一個web伺服器,然後定時響應各種請求。libevent庫使得高併發響應HTTP Server的編寫變得很容易。整個過程包括如下幾部:初始化,建立HTTP Server, 指定callback, 進入事件迴圈。另外在回撥函式中,可以獲取客戶端請求(request的HTTP Header和引數等),進行響應的處理,再將結果傳送給客戶端(response的HTTP Header和內容,如html程式碼)。libevent除了設定generic的callback,還可以對特定的請求路徑設定對應callback(回撥/處理函式)。
3.2關鍵資料結構
3.3推送設計原理
3.3.1事件的設計
針對沒一類操作事件,設定對應的事件響應回撥函式。
/sub訂閱:
Example:http://127.0.0.1:8100/sub?cname=12
響應此事件,新建一個cname的通道和對應的訂閱者類。
/push推送:
Example:http://127.0.0.1:8000/push?cname=12&content=hi
響應此事件,將內容傳送給cname指定的通道。程式會為每一個訂閱者分配一個通道來發送資料。
還有其他功能性事件,先簡單分析以上兩種,後期實踐應用時再進行補充。
3.3.2長連線技術的應用
使用者一上線,立馬根據建立通道,到程式關閉才結束通道,然後保持長連線,保持心跳。推送一次後就會連續的推送,不用再建立長連線,節省了開銷。
如果有類似經驗或者有類似需求,願意一同分享和討論。