Рубрики
Без рубрики

Веб-сайты с активными

В этом уроке мы создадим базовое клиент-серверное приложение с подключением к WebSocket с помощью Act… С тегами java, веб-разработчик, учебник, активный.

В этом уроке мы создадим базовое клиент-серверное приложение с подключением к WebSocket с использованием Active framework.

Вам необходимо импортировать следующие зависимости:


    
        io.activej
        activej-launchers-http
        3.0
    
    
        ch.qos.logback
        logback-classic
        1.2.3
    

Зависимость обратного входа является необязательной.

В этом уроке мы будем явно использовать следующие активные технологии:

  • Активный HTTP – высокопроизводительные асинхронные клиентские и серверные реализации.
  • Active Inject – легкая и мощная библиотека инъекций зависимостей.
  • Active Launcher – высоко обобщенная основная реализация метода для управления жизненным циклом приложения.
  • Активный цикл событий – обеспечивает эффективное управление асинхронными операциями без накладных расходов на многопоточность.
  • Активное обещание – высокопроизводительная и удобная альтернатива Java в будущем.
  • График активного обслуживания – предназначен для использования в сочетании с Активным впрыском и Активный Launcher как средство запуска/остановки служб приложений в соответствии с их графиком зависимостей.

Сервер WebSocket Pong для настольного тенниса

Давайте создадим сервер WebSocket “Pong”. Для этой цели нам нужно предоставить RoutingServlet и использовать map WebSocket метод для отображения Потребитель из WebSocket в качестве сервлета на /пути . Наш сервер просто примет сообщения, распечатает их и отправит обратно сообщение “Pong”.

public final class WebSocketPongServerExample extends HttpServerLauncher {

    @Provides
    AsyncServlet servlet() {
        return RoutingServlet.create()
                .mapWebSocket("/", webSocket -> webSocket.readMessage()
                        .whenResult(message -> System.out.println("Received:" + message.getText()))
                        .then(() -> webSocket.writeMessage(Message.text("Pong")))
                        .whenComplete(webSocket::close));
    }

    public static void main(String[] args) throws Exception {
        WebSocketPongServerExample launcher = new WebSocketPongServerExample();
        launcher.launch(args);
    }
}

Клиент Пинга WebSocket

Теперь давайте создадим клиента, который будет отправлять сообщение “Ping” на сервер через соединение WebSocket.

public final class WebSocketPingClientExample extends Launcher {
    @Inject
    AsyncHttpClient httpClient;

    @Inject
    Eventloop eventloop;

    @Provides
    Eventloop eventloop() {
        return Eventloop.create();
    }

    @Provides
    AsyncHttpClient client(Eventloop eventloop) {
        return AsyncHttpClient.create(eventloop);
    }

    @Override
    protected Module getModule() {
        return ServiceGraphModule.create();
    }

    @Override
    protected void run() throws ExecutionException, InterruptedException {
        String url = args.length != 0 ? args[0] : "ws://127.0.0.1:8080/";
        System.out.println("\nWeb Socket request: " + url);
        CompletableFuture future = eventloop.submit(() -> {
            System.out.println("Sending: Ping");
            return httpClient.webSocketRequest(HttpRequest.get(url))
                    .then(webSocket -> webSocket.writeMessage(Message.text("Ping"))
                            .then(webSocket::readMessage)
                            .whenResult(message -> System.out.println("Received: " + message.getText()))
                            .whenComplete(webSocket::close));
        });
        future.get();
    }

    public static void main(String[] args) throws Exception {
        WebSocketPingClientExample example = new WebSocketPingClientExample();
        example.launch(args);
    }
}

Во-первых, мы предоставляем необходимые зависимости: AsyncHttpClient и Цикл событий для него. Далее нам нужно переопределить getModule запуска и запустить методы. getМодуль предоставляет приложению базовый модуль бизнес-логики, в то время как run представляет основной Метод запуска . В методе run мы создаем поставщика и переопределяем его метод get с помощью лямбды. Здесь мы вызываем AsyncHttpClient.WebSocket запрос , который отправляет запрос и возвращает Обещание веб-кармана. Затем мы создаем функцию, которая отправляет сообщение “Ping” и получает ответ от сервера.

И все, ваше приложение WebSocket готово к использованию. Во-первых, запустите реализацию сервера и клиента. Вы можете найти исходный код примеров на GitHub .

Оригинал: “https://dev.to/activej/websockets-with-activej-4a1i”