永远不会调用onPongReceived

时间:2015-03-05 14:54:42

标签: android websocket androidasync-koush

我的团队正在构建一个Android应用程序,它将使用websockets与现有后端进行通信。我们选择使用Koushik Dutta的AndroidAsync来处理这种沟通 我想注册定期发送的ping,以检查连接是否仍然存在。我正在使用Wireshark来检查网络流量。这是Wireshark显示结果的屏幕截图:

Wireshark screenshot

从我在这里看到的情况来看,我相信正在发送ping,正在收到乒乓 我的代码片段是:

private void keepAlive() {
    ScheduledExecutorService scheduler =
            Executors.newSingleThreadScheduledExecutor();
    Runnable runnable = new Runnable() {
        public void run() {
            Log.d(TAG, "Pinging...");
            WebSocketHandler.this.webSocket.ping("LALALA");
        }
    };
    pingScheduledFuture = scheduler.scheduleAtFixedRate(runnable, 0, PING_PERIOD,
            TimeUnit.SECONDS);
}

onPongReceived方法只是打印到Logcat

@Override
public void onPongReceived(String s) {
    // TODO here I'm aware if connection is still alive
    Log.d(TAG, "Pong received! " + s);
}

但是,永远不会打印Pong received!!此外,如果我在那里放置一个断点,应用程序将永远不会停止执行该点 任何人都知道我在这里可能会缺少什么? 最好的问候和提前感谢

2 个答案:

答案 0 :(得分:2)

我不熟悉AsyncSocket但快速谷歌透露,您必须在某处注册回调setPongCallback()才能收到您的乒乓球。你在做这个吗?你没有展示很多代码。

答案 1 :(得分:1)

问题非常严重,但这是解决方案。我忘了将回调设置为websocket,如下所示:

WebSocketHandler.this.webSocket.setPongCallback(WebSocketHandler.this);

然后,正确收到了这些拨号。