Okhttp websocket отправить сообщение для открытия сокета

Прямо сейчас у меня есть следующий класс, который работает с WebSockets с использованием OkHttp, но способ его настройки таков, что у меня нет возможности держать WebSocket открытым, чтобы я мог отправлять новые сообщения в веб-сокет. Как я могу продолжать отправлять сообщения в один и тот же открытый веб-узел без создания нового подключения к веб-узлу?

public class OkHttp extends WebSocketListener {
    public void run() {
        String hostname = "127.0.0.1";
        int port = 8888;
        Proxy proxy = new Proxy(Proxy.Type.HTTP, new InetSocketAddress(hostname, port));

        OkHttpClient client = new OkHttpClient.Builder().proxy(proxy).readTimeout(10, TimeUnit.SECONDS).build();

        Request request = new Request.Builder().url("ws://echo.websocket.org").build();
        client.newWebSocket(request, this);

        // Trigger shutdown of the dispatcher's executor so this process can exit
        // cleanly.
        client.dispatcher().executorService().shutdown();
    }

    @Override
    public void onOpen(WebSocket webSocket, Response response) {
        webSocket.send("Hello...");
        webSocket.send("...World!");
        webSocket.send(ByteString.decodeHex("deadbeef"));
        webSocket.close(1000, "Goodbye, World!");
    }

    @Override
    public void onMessage(WebSocket webSocket, String text) {
        System.out.println("MESSAGE: " + text);
    }

    @Override
    public void onMessage(WebSocket webSocket, ByteString bytes) {
        System.out.println("MESSAGE: " + bytes.hex());
    }

    @Override
    public void onClosing(WebSocket webSocket, int code, String reason) {
        webSocket.close(1000, null);
        System.out.println("CLOSE: " + code + " " + reason);
    }

    @Override
    public void onFailure(WebSocket webSocket, Throwable t, Response response) {
        t.printStackTrace();
    }
}
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
0
2 652
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Метод newWebSocket() возвращает WebSocket, который можно использовать для постановки исходящих сообщений в очередь.

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