onPongReceived никогда не вызывается

Моя команда создает приложение для Android, которое будет использовать веб-сокеты для связи с существующим бэкэндом. Для решения этой проблемы мы решили использовать AndroidAsync от Koushik Dutta.
Я хотел бы зарегистрировать пинг для периодической отправки, чтобы проверить, живо ли соединение. Я использую Wireshark для проверки сетевого трафика. Это скриншот результата, который показывает Wireshark:

Скриншот Wireshark

Из того, что я вижу здесь, я считаю, что пинг отправляется, а понг принимается.
Фрагмент моего кода:

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 ответа

Решение

Я не знаком с AsyncSocket но быстрый гугл показал, что вы должны зарегистрировать обратный звонок setPongCallback() где-нибудь для вашего понга, который будет получен. Ты этим занимаешься? Вы не показываете много кода.

Проблема была чрезвычайно хромой, но вот решение. Я забыл установить обратный вызов для веб-сокета, например так:

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

И тогда, понги были правильно приняты.

Другие вопросы по тегам