Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
vp-webdev
6 лет назад

Подключаемся к WebSocket в Android приложении

В этой статье рассмотрим как создать Android клиент WebSocket.

Допустим, что мы уже создали проект в Android Studio. Первым делом откроем файл build.gradle(Module:app).

ВАЖНО, не забывайте разрешить приложению "выходить" в интернет. В файле AndroidManifest.xml пропишите это:

<uses-permission android:name="android.permission.INTERNET" />

И добавим в объект dependencies следующую строку:

compile 'com.squareup.okhttp3:okhttp:3.10.0'

Что мы сделали?

Мы добавили в Gradle, которая является системой сборки пакет okhttp, являющийся http-клиентом для Android.

Далее создадим наш класс. Я его назову для начала WebSocketClass. Не забываем его унаследовать от WebSocketListener.

Его содержимое будет следующим:

public class WebSocketGolos extends WebSocketListener {  
   @Override  
   public void onOpen(WebSocket webSocket, Response response) {  
         webSocket.send("Hello");  
   }  
  
   @Override  
   public void onMessage(WebSocket webSocket, String text)  
    {  
        Log.d("WS", text);  
        System.out.print(text);  
   }  
}

Всё просто. Метод onOpen принимает аргументы webSocket и Response и срабатывает при открытии соединения.

А onMessage при получении сообщения.

Далее перейдём в наш MainActivity, он должен создаться вместе с проектом.

И далее будем работать в методе onCreate, потому что мы не будем сейчас заморачиваться. И будем открывать WebSocket соединение при открытии приложения.

Создадим клиент

OkHttpClient client = new OkHttpClient.Builder().build();

Создадим запрос к нашему сокету

Request request = new Request.Builder()  
        .url("ws://chemnote.ru:8881")  
        .build();

Создадим экземпляр нашего класса:

WebSocketClass wsc = new WebSocketClass();

Установим новое WebSocket соеденение:

WebSocket ws = client.newWebSocket(request, wsc);

Укажем, что при отключении клиента ресурсы буду освобождены. Также запретим создавать новые клиенты при открытии соединения.

client.dispatcher().executorService().shutdown();

WebSocket-сервер настроен на Tornado, его установка была описана здесь.

Листинг WebSocketClass и MainActivity

Материал подготовлен автором @zheev

133
58.812 GOLOS
На Golos с August 2017
Комментарии (1)
Сортировать по:
Сначала старые