原文連接html
國內如今不少語音聊天工具都是基於TURN方式實現的,包括YY、AK等等,這種方式對於服務器的性能要求很高,並且在用戶量增大的時候,服務器壓力也會愈來愈大,用戶的語音質量也會受到很大影響。而基於P2P方式實現的語聊服務器,就能夠極大的避免這種狀況的發生,並且用戶的語音體驗也會很是好。
經過上文(P2P的原理和常見的實現方式(爲libjingle開路))咱們知道,由於NAT設備沒有固定標準的緣由,致使並不能100%的實現P2P,可是根據如今通用的ICE&STUN的方式,P2P的成功率能夠達到90%多。前段時間在找使用這種方法實現的成熟庫,最後猛然發現libjingle就在那裏。
經過一個多星期的研究,在此記錄一下libjingle庫的大體狀況,若有不妥,但願朋友們能夠留言或者郵件(peakflys@gmail.com)指正。服務器
·一個多用戶的語音聊天應用網絡
·一個多用戶的視頻會議應用svn
·一個多用戶的現場音樂、流媒體應用工具
·一個點到點的文件傳輸和共享的應用性能
目前庫的版本是0.7.1(2012年10月2日發佈),支持Windows和UNIX/Linux,開源許可用的是Berkeley-style,這也就意味着,能夠任意的修改和擴展它來更好的知足本身產品的須要。優化
庫的SVN路徑:http://libjingle.googlecode.com/svn/trunk/talkgoogle
值得注意的是:代理
① Libjingle庫自己的實現依賴於一些第三方庫,例如: 語音聊天依賴於Linphone或者GIPS,這取決於使用者的平臺code
② Libjingle只是一個客戶端的實現, relay Server協議和STUN協議(若是須要),還須要本身實現
實現relay Server後的網絡結構(STUN使用 網絡上現有的,例如Google等公司提供的公有STUN服務器):
實現relay Server和STUN Server後的網絡結構:
STUN協議的實現不難,網上也有不少開源的代碼實現,關鍵是須要一些資源的部署(須要兩個公網IP)
P2P的關鍵實如今客戶端,經過使用libjingle咱們能夠快速的構造一個健壯高效的P2P Client,若是僅僅是實現相似於Skype或者QQ那樣的兩人或者幾人聊天,服務器方面實現就很是容易。可是若是要實現大用戶參與的語音室,那麼咱們就得專一於服務器廣播包的優化了。