WebSocket-状态码403和状态消息-禁止

时间:2018-08-18 09:44:24

标签: android websocket apprtc

我正在使用Apprtc开发视频通话应用。请按照以下提及的库进行操作。

  1. https://github.com/njovy/AppRTCDemo
  2. https://github.com/Piasy/AppRTC-Android

当我将网址更改为自定义服务器而不是apprtc服务器时,视频通话将在1分钟后断开。我已经失去与服务器的连接。

为避免与服务器的连接丢失,我们需要在大约30秒的固定间隔内对服务器进行ping操作。

但是上面提到的AppRTC项目正在使用jar文件(autobanh.jar)进行websocket连接,但是在库sendPing中,mentod是私有的,因此无法访问。

问题1-有一种方法可以ping websocket服务器。

替换websocet库后尝试 我用下面提到的库更改了websocket库

  1. https://github.com/Koredotcom/android-kore-sdk/tree/master/BotsSDK/korebotsdklib/src/main/java/kore/botssdk/autobahn
  2. https://github.com/martindale/soundtrack.io-android/tree/master/src/de/tavendo/autobahn

在替换了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秒后如何避免通话中断的提示。

1 个答案:

答案 0 :(得分:1)

我已经将websocket库更改为 https://github.com/crossbario/autobahn-java

此库具有按固定时间间隔自动ping到服务器的功能。 添加后,我仅修改了ApprtcDemo- WebSocketChannelClient

的一类