libjingle是google提供的c++元件集,它為點對點通訊與語音呼叫功能提供交互操作性。元件包包括了建立網路連線(穿越nat與防火牆裝置,中繼伺服器和**),協商會話細節(編解碼器,檔案格式等),以及資料的交換。還提供了一些輔助的工具例如xml解析以及網路**的處理等。使用libjingle可以實現如下應用:
編寫乙個基於libjingle的應用程式,需要按照如下的步驟進行:
1. 為自己的應用程式建立訊號線程。
這個執行緒被許多元件使用,也是libjingle內部訊息系統的關鍵。這個執行緒必須在例項sessionmanager之前或執行任何task物件(例如xmpppump)之前建立並啟動。需要建立physicalsocketserver物件,將其傳到乙個新的使用這個socket server的執行緒例項,然後把新的執行緒傳到全域性的靜態threadmanager類。
2. 在伺服器中註冊。
xmpp伺服器起到**接觸點的作用,註冊到xmpp伺服器用於找到其他的電腦。為了便於註冊,必須例項化xmpp任務管理器和xmppclient物件。
3. 傳送並請求聯機狀態。
4. 建立會話管理通道。
用於監聽和響應連線請求,或用於發起你自己的請求。
5. 向外傳送連線請求,或者接收連線請求。
為了偵聽傳入的連線,必須註冊接收來自sessionmanager會話連線的通知,註冊會話狀態的變化,傳送連線請求時建立的任何自定義的會話描述,並執行其他管理任務。其中的許多任務由會話邏輯與管理元件中的封裝類完成。
libjingle的執行緒操作
上一節講到了libjingle的執行緒的實現。但是libjingle是支援多執行緒的,如果我想讓一件事情讓多個執行緒一起做,又是如何操作呢?其實更簡單。只需要在你構造你的物件的時候,指定多個執行緒,然後都啟動它們。然後在你的物件的方法直接post,並且在你的onmessage方法做判斷,if thr...
基於BootstrapTable的簡單應用
bootstrap table基於bootstrap的jquery 外掛程式,通過簡單的設定,就可以擁有強大的單選 多選 排序 分頁,以及編輯 匯出 過濾 擴充套件 等等的功能。本文將以乙個基於bootstraptable控制項的圖書列表查詢功能為例項 如圖1 注意本例項使用了asp.net mvc...
基於Ruby on Rails開發以太坊的應用
其中node執行geth或者eth,彼此通過30303埠進行p2p的連線,其上執行的協議即俗稱挖礦協議,也即共識協議,包括幾個部分,廣播交易或訊息,同步區塊等。node即節點,經常也稱geth client或geth server。每個node對外提供jsonrpc 8545埠 或者ipc埠,可以通...