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