前两篇文章我简单介绍了开发WebRTC2SIP的设计架构图和报文逻辑,看着简简单单,做起来还是有很多事情要考虑的。我们在开发的过程中,也是磕磕绊绊,一步一个脚印(坑)走过来的。碰到的很多问题都是兼容的问题。 我们碰到过哪些问题呢?我们总结下来,开发时遇到了这些问题: 1.怎么处理早起媒体? 2.怎么处理加密不被过滤? 3.怎么防止SIP注册攻击和匿名呼叫攻击? 4.怎么支持消息扩展,扩展支持更多服务? 5.正在通话呼叫(calling ringing )过程中,主叫或者被叫断线了,怎么探测?怎么recover,自动重连话务? 6.通话双方任一方突然杀死SDK进程 怎么通知对方? 7.SIP呼入的时候,如果被叫不在线?怎么个处理逻辑? 8.客户要求实现同一个账户同振怎么实现? 9.客户要求支持新版本的的SDK呼入呼出的同时,让同一套账户体系支持SIP的呼入和呼出;如果有人呼入,要求SIP客户端和声网客户端,都要响铃,即要兼容原来的客户固定资产(SIP话机等)可以继续被使用。
除了这些还有在测试阶段发现很多诡异的问题 oˍo … 1.比如电话接通后,说着说着就没声音了 (⊙ˍ⊙) 2.说话会卡断,有时候接通就会卡有的时候通话几分钟后会卡 (⊙ˍ⊙)+1 3.经常碰到被叫挂机,声网的SDK还在写日志,一天50个电话写日志几十G,G,G,G,G,G (°ー°〃) 4.单通,一方听不到声音 (ʘ╻ʘ) 5.编码问题,码率不一致 …(⊙ˍ⊙;)… 6.各种莫名崩溃:启动崩溃,接通崩溃,挂机崩溃,神经病似得说崩就崩溃 …╥﹏╥…
一路走来,几个同事经常分析代码到半夜。终于在测试4个月后稳定下来。其实现在回头看,就是因为没有吃透声网的API文档,没有好好利用社区的功能。如果你碰到的坑是上述的问题,那么花点时间仔细撸几遍API文档就可以搞定了。 系统运行了几个月没出过问题,公司要求总结下开发中碰到的问题,声网的小伙伴说,要学会回馈社区,完善一下学习交流的氛围。有感于这一段时间的开发工作,于是就写下这几篇文章,希望能对大家有所帮助。我会敲代码,不太会表达,如果大家在实现这个模块的过程中也碰到问题,想了解一些细节。欢迎联系交流~~~