Соединение
A Websocket является идеальным решением вашей проблемы.Это создает постоянное соединение между клиентом и сервером , и обе стороны могут начать отправку данных в любое время.
в OKHTTP вы можетереализуйте это путем
добавления библиотеки в файл Gradle сборки compile 'com.squareup.okhttp3:okhttp:3.6.0'
Создайте класс , который реализует okhttp WebsocketListener interface
private final class MyWebSocketListener extends WebSocketListener {
private static final int CLOSE_STATUS = 1000;
@Override
public void onOpen(WebSocket webSocket, Response response) {
webSocket.send("Hello");
webSocket.close(CLOSE_STATUS, "Goodbye");
}
@Override
public void onMessage(WebSocket webSocket, String text) {
log(text);
}
@Override
public void onMessage(WebSocket webSocket, ByteString bytes) {
log(bytes.hex());
}
@Override
public void onClosing(WebSocket webSocket, int code, String reason) {
webSocket.close(CLOSE_STATUS, null);
log("Closing");
}
@Override
public void onFailure(WebSocket webSocket, Throwable t, Response response) {
log(t.getMessage());
}
}
Создать метод для инициирования соединения
private void connect() {
Request request = new Request.Builder().url("ws://my.websocket.url").build();
MyWebSocketListener listener = new MyWebSocketListener();
WebSocket ws = client.newWebSocket(request, listener);
\\ to shutdown the connection client.dispatcher().executorService().shutdown();
}
Это должно установить соединение с сервером и должносохраняться, пока приложение живое.Я рекомендую прочитать больше на веб-сокетах, если вы - тот же человек, который отвечает за бэкэнд.