Skip to content
package com.example.websocket8_4.handler;
import org.springframework.stereotype.Component;
import org.springframework.web.reactive.socket.WebSocketHandler;
import org.springframework.web.reactive.socket.WebSocketSession;
import reactor.core.publisher.Mono;
@Component
public class ChatHandler implements WebSocketHandler {
    @Override
    public Mono<Void> handle(WebSocketSession session) {
        return session.send(
                session.receive()
                        .map(msg -> session.textMessage("Echo: " + msg.getPayloadAsText()))
        );
    }
}

ChatHandler. Давайте проанализируем его:

Анализ WebSocket обработчиков

ChatHandler

Обзор

ChatHandler - это простой эхо-обработчик WebSocket соединений, который возвращает полученные сообщения с префиксом "Echo: ".

Реализация

@Component
public class ChatHandler implements WebSocketHandler {
    @Override
    public Mono<Void> handle(WebSocketSession session) {
        return session.send(
                session.receive()
                        .map(msg -> session.textMessage("Echo: " + msg.getPayloadAsText()))
        );
    }
}

Принцип работы

  1. Получает входящее сообщение через session.receive()
  2. Преобразует сообщение, добавляя префикс "Echo: "
  3. Отправляет преобразованное сообщение обратно клиенту

Особенности

  • Использует реактивное программирование
  • Простая обработка без сохранения состояния
  • Не требует дополнительных зависимостей

Сравнение с JsonSaveHandler

Аспект ChatHandler JsonSaveHandler
Сложность Простой Сложный
Сохранение данных Нет Да
Обработка ошибок Нет Да
Валидация Нет Проверка JSON
Зависимости Нет UserDataRepository

Общие характеристики обработчиков

  1. Реализация интерфейса WebSocketHandler
  2. Использование реактивного программирования
  3. Работа с WebSocketSession для приема и отправки сообщений

Дополнительные замечания: 1. Это очень простой обработчик, который просто отражает сообщения обратно 2. В отличие от JsonSaveHandler, он не выполняет никакой сложной обработки 3. Не требует дополнительных зависимостей или конфигурации

Для полного понимания работы приложения осталось увидеть: 1. UpperCaseHandler 2. LowerCaseHandler 3. Класс UserData 4. Реализацию UserDataRepository

Готов к получению следующего файла.