我正在使用Apprtc开发视频通话应用。请按照以下提及的库进行操作。
当我将网址更改为自定义服务器而不是apprtc服务器时,视频通话将在1分钟后断开。我已经失去与服务器的连接。
为避免与服务器的连接丢失,我们需要在大约30秒的固定间隔内对服务器进行ping操作。
但是上面提到的AppRTC项目正在使用jar文件(autobanh.jar)进行websocket连接,但是在库sendPing中,mentod是私有的,因此无法访问。
问题1-有一种方法可以ping websocket服务器。
替换websocet库后尝试 我用下面提到的库更改了websocket库
在替换了websocket库之后,现在我可以访问sendPing方法了。但是在视频通话60秒后,我仍然失去了连接。
Ping方法-
public void sendPingMessageToServer() {
try {
WebSocketMessage.Ping ping = new WebSocketMessage.Ping();
// ping.mPayload="ping to server".getBytes();
mWebSocketWriter.sendPing(ping);
} catch (Exception e) {
e.printStackTrace();
}
}
当取消注释ping.mPayload行时,我得到BufferOverflowException。
30秒计时器
private void startConnectionCheckTimer() {
timerInstance.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
try {
ws.sendPingMessageToServer();
} catch (Exception e) {
e.printStackTrace();
}
}
}, 0, 30 * 1000);
}
请提出60秒后如何避免通话中断的提示。
答案 0 :(得分:1)
我已经将websocket库更改为 https://github.com/crossbario/autobahn-java
此库具有按固定时间间隔自动ping到服务器的功能。 添加后,我仅修改了ApprtcDemo- WebSocketChannelClient
的一类