Почему мой клиент React с Next.js не получает сообщения, отправленные WebSocket на серверной части Spring Boot?JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Почему мой клиент React с Next.js не получает сообщения, отправленные WebSocket на серверной части Spring Boot?

Сообщение Anonymous »

Я пытаюсь реализовать систему WebSocket. На сервере я правильно настроил WebSocket и службу отправки сообщений. Клиент React без проблем подключается к WebSocket, но проблема в том, что он не может перехватывать сообщения, отправленные сервером.
Вот конфигурация WebSocket на сервере загрузки Java Spring:< /p>

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

@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

@Override
public void configureMessageBroker(MessageBrokerRegistry config) {
config.enableSimpleBroker("/topic", "/queue");
config.setApplicationDestinationPrefixes("/app");
config.setUserDestinationPrefix("/user");
}

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/notifications")
.setAllowedOrigins("http://localhost:3000") // Allow frontend origin
.withSockJS();
}
}

@Service
public class NotificationService {

private final SimpMessagingTemplate messagingTemplate;

@Autowired
public NotificationService(SimpMessagingTemplate messagingTemplate) {
this.rabbitTemplate = rabbitTemplate;
this.messagingTemplate = messagingTemplate;
}

public void sendWelcomeNotification(UserEntity loggedInUser) {
// Notification data
String message = "Welcome to HydroLife, " + loggedInUser.getName() + "!";
String sender = "HydroLife";
LocalDateTime timestamp = LocalDateTime.now();
String profileImage = "/images/Logo3.png";
var notification = new NotificationDTO(sender, message, timestamp, profileImage);

/// Sending the notification via WebSocket to the frontend
// Converting and sending to the specific user destination
messagingTemplate.convertAndSendToUser(
loggedInUser.getEmail(),
"/queue/notifications",
notification
);
}
}
Во внешнем интерфейсе я использую клиент WebSocket в React с Next.js для подключения к серверу, но он не перехватывает сообщения. Вот код клиента:

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

useEffect(() =\> {
const socket = new SockJS('http://localhost:8080/notifications');
const stompClient = new Client({
onConnect: () =\> {
console.log('Connected to WebSocket');

stompClient.subscribe('/user/queue/notifications', (message) => {
const notificationData = JSON.parse(message.body);
setNotification(notificationData);
console.log('New notification received:', notificationData);
});
},
});

stompClient.activate();

return () => {
if (stompClient) {
stompClient.deactivate();
console.log('Disconnected from WebSocket');
}
};

}, []);
Соединение WebSocket установлено успешно (клиент подключается к серверу), но клиент не может перехватывать или отображать сообщения, отправленные сервером. console.log внутри stompClient.subscribe никогда не запускается, хотя серверная служба отправляет сообщения в тему.
Я уже проверил, отправляет ли сервер сообщения, и вроде работает правильно. Почему мой клиент React с Next.js не получает сообщения от WebSocket на бэкэнде Spring Boot? Может быть, мне что-то не хватает или какая-то неправильная конфигурация в соединении WebSocket?

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

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

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

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

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

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

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