Android Websocket Client

Блог о программировании и не только

Android Websocket Client

В поисках лучшего клиента для WebSokets под Android нашел вот такую замечательную библиотеку: nv-websocket-client

Все найденные библиотеки не соответствовали требованиям: https, keep-alive, кроме этой.

Эта заработала с “пол оборота”.

Об этом небольшая статья.

Разработал ее товарищ Takahiko Kawasaki.

Реализует следующие возможности:

  • complies with RFC 6455 (The WebSocket Protocol),
  • works on Java SE 1.5+ and Android,
  • supports all the frame types (continuation, binary, text, close, ping and pong),
  • provides a method to send a fragmented frame in addition to methods for unfragmented frames,
  • provides a method to get the underlying raw socket of a web socket to configure it,
  • provides a method for Basic Authentication,
  • provides a factory class which utilizes javax.net.SocketFactory interface,
  • provides a rich listener interface to hook web socket events,
  • has fine-grained error codes for fine-grained controllability on errors,
  • allows to disable validity checks on RSV1/RSV2/RSV3 bits and opcode of frames,
  • and supports HTTP proxy, especially “Secure WebSocket” (was) through “Secure Proxy” (https).

Давайте рассмотрим небольшой пример работы с этим сокет клиентом

Подключаем в gradle

Работать будем через https.

К примеру, нужно подключиться к чату:

Для поддержки соединения устанавливаем соответствующий интервал пинга.

Для удобства реализуем SocketListner через наследование от адаптера:

Полученные сообщения мы можем переварить в json и действовать согласно инструкции. =) В конкретном примере смотрится тип сообщения и передается в соответствующее событие через EventBus.

На этом все. Надеюсь это уменьшит время Ваших поисков рабочего android websocket client.

 

комментария 4

  1. Дмитрий:

    Спасибо, действительно хорошая либа

  2. Да, надо ее еще скрестить с реактивностью =)

  3. Дмитрий:

    Привет, вот что пишет автор насчет реконнекта в методе onError()

    Note that you should not trigger reconnection in onError() method because onError() may be called multiple times due to one error. Instead, onDisconnected() is the right place to trigger reconnection.

Добавить комментарий