1.1. Конфигурация WebSocket
WebSocketConfig.java
package com.example.websocket8_4.config;
import com.example.websocket8_4.handler.ChatHandler;
import com.example.websocket8_4.handler.JsonSaveHandler;
import com.example.websocket8_4.handler.LowerCaseHandler;
import com.example.websocket8_4.handler.UpperCaseHandler;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.reactive.HandlerMapping;
import org.springframework.web.reactive.handler.SimpleUrlHandlerMapping;
import org.springframework.web.reactive.socket.server.support.WebSocketHandlerAdapter;
import java.util.Map;
@Configuration
public class WebSocketConfig {
private final ChatHandler chatHandler;
private final UpperCaseHandler uppercaseHandler;
private final LowerCaseHandler lowercaseHandler;
private final JsonSaveHandler jsonSaveHandler;
public WebSocketConfig(ChatHandler chatHandler, UpperCaseHandler uppercaseHandler, LowerCaseHandler lowercaseHandler, JsonSaveHandler jsonSaveHandler) {
this.chatHandler = chatHandler;
this.uppercaseHandler = uppercaseHandler;
this.lowercaseHandler = lowercaseHandler;
this.jsonSaveHandler = jsonSaveHandler;
}
@Bean
public HandlerMapping webSocketMapping() {
return new SimpleUrlHandlerMapping(Map.of(
"/chat", chatHandler,
"/uppercase", uppercaseHandler,
"/lowercase", lowercaseHandler,
"/jsonsave", jsonSaveHandler
), 1);
}
@Bean
public WebSocketHandlerAdapter handlerAdapter() {
return new WebSocketHandlerAdapter();
}
}
Это конфигурационный класс WebSocket для вашего проекта. Давайте я проанализирую его:
-
Этот файл определяет конфигурацию WebSocket используя Spring WebFlux (реактивный стек Spring).
-
В проекте определено четыре различных обработчика WebSocket:
- ChatHandler - вероятно, для общего чата
- UpperCaseHandler - предположительно для преобразования текста в верхний регистр
- LowerCaseHandler - предположительно для преобразования текста в нижний регистр
-
JsonSaveHandler - вероятно, для сохранения JSON-данных
-
Класс использует внедрение зависимостей через конструктор для всех обработчиков.
-
Определены два бина:
- webSocketMapping: создает маппинг URL-путей к соответствующим обработчикам
-
handlerAdapter: создает адаптер для обработки WebSocket-соединений
-
URL-пути для WebSocket подключений:
- /chat
- /uppercase
- /lowercase
- /jsonsave
Это хорошее начало для понимания структуры проекта. Буду ждать остальные файлы, чтобы составить полную картину. Особенно интересно будет увидеть реализацию каждого из обработчиков, которые объявлены в этой конфигурации.
Готов принять следующий файл, когда вы будете готовы его отправить.
[[ссылка на проект]]