我的团队正在构建一个 Android 应用程序,该应用程序将使用 websockets 与现有后端进行通信。我们选择使用 Koushik Dutta 的 AndroidAsync 来处理这种通信。
我想注册一个定期发送的 ping,以检查连接是否仍然存在。我正在使用 Wireshark 来检查网络流量。这是 Wireshark 显示的结果的屏幕截图:
从我在这里看到的情况来看,我相信正在发送 ping,并且正在接收 pong。
我的代码片段是:
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!
从来没有打印过!另外,如果我在那里设置断点,应用程序将永远不会停止执行
任何人都知道我在这里可能缺少什么吗?
提前致以最诚挚的问候和感谢