Я новичок в реализации веб-сокета в приложении, пытаюсь реализовать простое приложение, в котором неаутентифицированные пользователи могут просто ввести имя группы и отправить сообщение группе.
Конфигурация
@Configuration @EnableWebSocketMessageBroker публичный класс WebSockConfig реализует WebSocketMessageBrokerConfigurer { @Override общественный недействительный RegisterStompEndpoints (реестр StompEndpointRegistry) { реестр.addEndpoint("/ws-reg").withSockJS(); } @Override public void configureMessageBroker (конфигурация MessageBrokerRegistry) { config.setApplicationDestinationPrefixes("/app"); config.enableSimpleBroker("/all","/personal"); } } Контроллер
@Controller публичный класс HomeController { @Autowired частный SimpMessagingTemplate simpMessagingTemplate; частная окончательная Map groupSessions = new HashMap(); @MessageMapping("/group/{groupName}/join") public void joinGroup(@DestinationVariable String groupName, SimpMessageHeaderAccessor headerAccessor) { groupSessions.computeIfAbsent(groupName, k -> new ArrayList()).add(headerAccessor.getSessionId()); } @MessageMapping("/group/{groupName}/send") public void sendToGroup(@DestinationVariable String groupName, Message message) выдает IOException { for (Строковый сеанс: groupSessions.get(groupName)){ //Просто добавляю все эти 3 вызова методов, которые я пробовал, ни один не сработал //При отладке этот метод вызывается, а переменная сеанса не равна нулю simpMessagingTemplate.convertAndSendToUser(сессия,"/личное",сообщение); simpMessagingTemplate.send("/personal",message); simpMessagingTemplate.send(сообщение); } } } JavaScript в HTML
const сокет = новый SockJS('http://localhost:8080/ws-reg'); const stompClient = Stomp.over(сокет); функция joinGroup() { const groupName = document.getElementById('groupInput').value; stompClient.connect({}, function(frame) { setConnected (истина); console.log('Подключено: ' + кадр); stompClient.subscribe('/personal', функция(приветствие){ console.log(JSON.parse(greeting.body)); }); }); stompClient.send(`/app/group/${groupName}/join`, {}, JSON.stringify({})); } функция sendMessage() { const groupName = document.getElementById('groupInput').value; const messageContent = document.getElementById('messageInput').value; stompClient.send(`/app/group/${groupName}/send`, {}, JSON.stringify({content: messageContent })); } Просмотр FE

Мои ожидания:
первый пользователь: введите «group1» и присоединитесь
второй пользователь: введите «group1» и присоединитесь
третий пользователь: введите «group2» и присоединитесь
Когда первый пользователь отправляет сообщение, оно должно передаваться в веб-сокет только для первого и второго пользователей.
Во время отладки нет журналов новых сообщений или каких-либо событий в веб-сокетах каких-либо пользователей