Соединение WebSocket с «ws://localhost:9090/ws» не удалось: соединение закрытоJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Соединение WebSocket с «ws://localhost:9090/ws» не удалось: соединение закрыто

Сообщение Anonymous »

Я работаю над интеграцией связи WebSocket между интерфейсом React и сервером Spring Boot с помощью STOMP. Однако я сталкиваюсь с проблемами с подключением WebSocket, что приводит к повторяющимся сбоям и попыткам автоматического повторного подключения.
Описание проблемы
Я настроил соединение WebSocket из своего приложения React. к бэкэнду Spring Boot с использованием STOMP через WebSocket. Вот основные сведения о моей настройке:
Бэкэнд: приложение Spring Boot, настроенное с помощью @EnableWebSocketMessageBroker и использующее WebSocketMessageBrokerConfigurer для настройки конечных точек и брокеров сообщений.
Внешний интерфейс: приложение React использует @stomp/stompjs для установки соединения WebSocket с ws://localhost:9090/ws.
Ошибка: соединение WebSocket завершается с ошибкой:
Ошибка: соединение WebSocket завершается с ошибкой:

Код: Выделить всё

WebSocket connection to 'ws://localhost:9090/ws' failed: Connection closed
STOMP: scheduling reconnection in 5000ms
Предпринятые шаги
Конфигурация серверной части: я настроил конечные точки WebSocket и брокеры сообщений в своем приложении Spring Boot с помощью WebSocketMessageBrokerConfigurer

Код: Выделить всё

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/ws").setAllowedOrigins("*").withSockJS();
}

@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.enableSimpleBroker("/topic");
registry.setApplicationDestinationPrefixes("/app");
}
}
Реализация внешнего интерфейса: в моем приложении React я использую @stomp/stompjs для установки соединения WebSocket и управления им.

Код: Выделить всё

import React, { useEffect, useState } from "react";
import { Client } from "@stomp/stompjs";

const ChatWindow = ({ user }) => {
const [client, setClient] = useState(null);

useEffect(() => {
const newClient = new Client({
brokerURL: "ws://localhost:9090/ws",
connectHeaders: {
login: "guest",
passcode: "guest",
},
debug: (str) => {
console.log(str);
},
});

newClient.onConnect = () => {
console.log("Connected to WebSocket");
};

newClient.activate();

setClient(newClient);

return () => {
newClient.deactivate();
};
}, []);

// Other methods and state management for sending/receiving messages

return (
// JSX for rendering chat window
);
};

export default ChatWindow;
а также возникла ошибка при поддержке при попытке поговорить
2024-06-23T11:05:14.961+05:30 INFO 2456 --- [чат] [MessageBroker-1] o.s.w.s.c.WebSocketMessageBrokerStats : WebSocketSession[0 текущий WS(0)-HttpStream(0)-HttpPoll(0), всего 0, 0 аварийно закрыто (0 сбой подключения, 0 ограничение отправки, 0 ошибка транспорта)] , stompSubProtocol[обработано CONNECT(0)-CONNECTED(0)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[размер пула = 0, активные потоки = 0, задачи в очереди = 0, завершенные задачи = 0], outboundChannel[ размер пула = 0, активные потоки = 0, задачи в очереди = 0, завершенные задачи = 0], sockJsScheduler[размер пула = 1, активные потоки = 1, задачи в очереди = 0, завершенные задачи = 0]
в контексте с путем [] выдало исключение [Ошибка обработки запроса: java.lang.IllegalArgumentException: если параметрallowCredentials имеет значение true, то AllowCredentials не может содержать специальное значение "*", поскольку оно не может быть установлено в "Access-Control-Allow" -Origin» заголовок ответа. Чтобы разрешить учетные данные для набора источников, перечислите их явно или рассмотрите возможность использования вместо этого «allowedOriginPatterns».] с основной причиной
java.lang.IllegalArgumentException: если значение параметраallowCredentials равно true, разрешенныеOrigins не могут содержать специальное значение «*», поскольку его нельзя установить в заголовке ответа «Access-Control-Allow-Origin». Чтобы разрешить учетные данные для набора источников, перечислите их явно или рассмотрите возможность использования вместо этого «allowedOriginPatterns».
Моя настройка cors ==>

Код: Выделить всё

@Configuration
public class WebConfig implements WebMvcConfigurer {

@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOriginPatterns("http://localhost:5173")
.allowedMethods("GET", "POST", "PUT", "DELETE")
.allowCredentials(true) // allow credentials
.allowedHeaders("*");
}
}
Ожидаемый результат
Я ожидаю, что соединение WebSocket будет успешно установлено между моим интерфейсом React и сервером Spring Boot, настроенным с помощью STOMP. Однако я сталкиваюсь с постоянными сбоями подключения с автоматическими попытками повторного подключения каждые 5000 мс.
Дополнительная информация
Настройка сети: я убедился, что и интерфейсная, и серверная части работают на тот же компьютер, и я проверил наличие проблем с сетью или ограничений брандмауэра.
Журналы: внутренние журналы указывают на успешный запуск сервера WebSocket на порту 9090.
Анализ ошибок: сообщение об ошибке не содержит подробной информации о основная причина закрытия соединения.
Вопрос
Что может быть причиной неоднократного сбоя соединения WebSocket и как я могу устранить или решить эту проблему? Существуют ли дополнительные настройки или проверки, которые мне следует выполнить, чтобы обеспечить стабильное соединение WebSocket между моим интерфейсом React и сервером Spring Boot?
И я использую два порта для загрузки sprinb на 9090 и сокет. ио 8080

Подробнее здесь: https://stackoverflow.com/questions/786 ... ion-closed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»