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

muk*_*esh 5 android websocket apprtc

我正在使用下面提到的Apprtc.Follow视频通话应用程序.

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

当我将url更改为我的自定义服务器而不是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秒后我的连接丢失了.

平方法 -

 public void sendPingMessageToServer() {
    try {
        WebSocketMessage.Ping ping = new WebSocketMessage.Ping();
//            ping.mPayload="ping to server".getBytes();
        mWebSocketWriter.sendPing(ping);

    } catch (Exception e) {
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

在取消注释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);
}
Run Code Online (Sandbox Code Playgroud)

请建议60秒后如何避免断电.

muk*_*esh 1

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

该库具有定期自动 ping 服务器的功能。添加后,我只修改了ApprtcDemo的一个类-WebSocketChannelClient