Open hudt opened 4 years ago
ActionController的Play方法里,先通知IPC推流(mSipLayer.sendInvite),等待响应之后,才启动TCPServer的。 如果IPC推流较慢,TCPServer已经启动完成,则没有什么问题。 但如果IPC推流时间比TCPServer启动时间早,则可能会导致IPC认为不可达断流。 重现方法: if(response != null ){ Thread.sleep(1000) //code }
if(response != null ){ Thread.sleep(1000) //code }
我有两台IPC,其中一台(电信)与服务器(移动)是跨运营商的,推流一直可以推。另一台IPC(移动)则不怎么容易推流成功。所以我猜测是这个原因
有抓包的数据吗,如果握手失败,就是这个问题。
我刚才把TCPServer启动提前了,并且1秒后再向IPC发送推流(mSipLayer.sendInvite)命令,这个问题就没有再出现过了。再在TCPSever中加入这样一个功能,10秒内没有收到推流帧,自动关闭TCPSever,这样来防止TCPSever启动了,IPC却没有推流或者Respnse失败。
我试试看能不能抓包
第一台抓包数据图片 第二台抓包数据图片
第一台抓包数据 第二台抓包数据
ActionController的Play方法里,先通知IPC推流(mSipLayer.sendInvite),等待响应之后,才启动TCPServer的。 如果IPC推流较慢,TCPServer已经启动完成,则没有什么问题。 但如果IPC推流时间比TCPServer启动时间早,则可能会导致IPC认为不可达断流。 重现方法:
if(response != null ){ Thread.sleep(1000) //code }
我有两台IPC,其中一台(电信)与服务器(移动)是跨运营商的,推流一直可以推。另一台IPC(移动)则不怎么容易推流成功。所以我猜测是这个原因