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()))
);
}
}
Принцип работы
- Получает входящее сообщение через
session.receive()
- Преобразует сообщение, добавляя префикс "Echo: "
- Отправляет преобразованное сообщение обратно клиенту
Особенности
- Использует реактивное программирование
- Простая обработка без сохранения состояния
- Не требует дополнительных зависимостей
Сравнение с JsonSaveHandler
Аспект | ChatHandler | JsonSaveHandler |
---|---|---|
Сложность | Простой | Сложный |
Сохранение данных | Нет | Да |
Обработка ошибок | Нет | Да |
Валидация | Нет | Проверка JSON |
Зависимости | Нет | UserDataRepository |
Общие характеристики обработчиков
- Реализация интерфейса WebSocketHandler
- Использование реактивного программирования
- Работа с WebSocketSession для приема и отправки сообщений
Дополнительные замечания: 1. Это очень простой обработчик, который просто отражает сообщения обратно 2. В отличие от JsonSaveHandler, он не выполняет никакой сложной обработки 3. Не требует дополнительных зависимостей или конфигурации
Для полного понимания работы приложения осталось увидеть: 1. UpperCaseHandler 2. LowerCaseHandler 3. Класс UserData 4. Реализацию UserDataRepository
Готов к получению следующего файла.