1. 程式人生 > >推送技術-icomet學習和分析

推送技術-icomet學習和分析

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長連線技術的應用

       使用者一上線,立馬根據建立通道,到程式關閉才結束通道,然後保持長連線,保持心跳。推送一次後就會連續的推送,不用再建立長連線,節省了開銷。

        如果有類似經驗或者有類似需求,願意一同分享和討論。