Skip to content

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 для вашего проекта. Давайте я проанализирую его:

  1. Этот файл определяет конфигурацию WebSocket используя Spring WebFlux (реактивный стек Spring).

  2. В проекте определено четыре различных обработчика WebSocket:

  3. ChatHandler - вероятно, для общего чата
  4. UpperCaseHandler - предположительно для преобразования текста в верхний регистр
  5. LowerCaseHandler - предположительно для преобразования текста в нижний регистр
  6. JsonSaveHandler - вероятно, для сохранения JSON-данных

  7. Класс использует внедрение зависимостей через конструктор для всех обработчиков.

  8. Определены два бина:

  9. webSocketMapping: создает маппинг URL-путей к соответствующим обработчикам
  10. handlerAdapter: создает адаптер для обработки WebSocket-соединений

  11. URL-пути для WebSocket подключений:

  12. /chat
  13. /uppercase
  14. /lowercase
  15. /jsonsave

Это хорошее начало для понимания структуры проекта. Буду ждать остальные файлы, чтобы составить полную картину. Особенно интересно будет увидеть реализацию каждого из обработчиков, которые объявлены в этой конфигурации.

Готов принять следующий файл, когда вы будете готовы его отправить.

[[ссылка на проект]]