Libjingle库简介

原文连接html

国内如今不少语音聊天工具都是基于TURN方式实现的,包括YY、AK等等,这种方式对于服务器的性能要求很高,并且在用户量增大的时候,服务器压力也会愈来愈大,用户的语音质量也会受到很大影响。而基于P2P方式实现的语聊服务器,就能够极大的避免这种状况的发生,并且用户的语音体验也会很是好。
   经过上文(P2P的原理和常见的实现方式(为libjingle开路))咱们知道,由于NAT设备没有固定标准的缘由,致使并不能100%的实现P2P,可是根据如今通用的ICE&STUN的方式,P2P的成功率能够达到90%多。前段时间在找使用这种方法实现的成熟库,最后猛然发现libjingle就在那里。
   经过一个多星期的研究,在此记录一下libjingle库的大体状况,若有不妥,但愿朋友们能够留言或者邮件(peakflys@gmail.com)指正。服务器

Libjingle综述   
   Libjingle是一个方便实现P2P传输的开源库,由google公司开发,并与2005年12月15日发布第一个版本,能够粗略的当作是Jingle协议的C++实现库(peakflys注:只是和Jingle协议很是类似,并不彻底兼容,区别之后介绍),Google Talk便是基于这个库开发的。经过libjingle咱们能够创建一个直通的网络链接(无视中间的NAT、防火墙、中继服务器和代理等),无需特别关心Session创建的细节(加解密、格式等),直接进行数据的交换。它也实现了一些辅助的功能,例如XML的解析和网络代理的处理。咱们经过它能够实现以下的应用:

·一个多用户的语音聊天应用网络

·一个多用户的视频会议应用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那样的两人或者几人聊天,服务器方面实现就很是容易。可是若是要实现大用户参与的语音室,那么咱们就得专一于服务器广播包的优化了。

相关文章
相关标签/搜索