Кадр WebSocket был отправлен с нераспознанным кодом операции [7]] Angular | Весенний ботинокJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Кадр WebSocket был отправлен с нераспознанным кодом операции [7]] Angular | Весенний ботинок

Сообщение Anonymous »

Кадр WebSocket с неизвестным кодом операции [7] при подключении Angular к серверу Spring Boot WebSocket
Я пытаюсь подключить приложение Angular к серверу Spring Boot WebSocket, но обнаруживаю ошибку со следующим сообщением:

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

A WebSocket frame was sent with an unrecognised opCode of [7]
Вот конфигурация Spring Boot WebSocket, которую я использую:

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

@Configuration
@EnableWebSocketMessageBroker
public class WebsocketConfig implements WebSocketMessageBrokerConfigurer {

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

@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/chess-websocket").setAllowedOrigins("http://localhost:4200").withSockJS();
}

}
А это код Angular, который я использую для подключения к WebSocket:

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

import { Component, OnInit } from '@angular/core';
import { RouterOutlet } from '@angular/router';
import { Client } from '@stomp/stompjs';
import SockJS from 'sockjs-client';

@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet],
templateUrl: './app.component.html',
styleUrl: './app.component.css',
})
export class AppComponent implements OnInit {
title = 'client';

ngOnInit(): void {
const socket = new SockJS('http://localhost:8080/chess-websocket');
const stompClient = new Client({
webSocketFactory: () => socket,
debug: (msg) => console.log(msg),
onConnect: () => console.log('Connected'),
onStompError: (frame) => console.error('STOMP Error:', frame),
});
stompClient.activate();
}
}
Зависимости в package.json:

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

"dependencies": {
"@angular/animations": "^18.2.0",
"@angular/common": "^18.2.0",
"@angular/compiler": "^18.2.0",
"@angular/core": "^18.2.0",
"@angular/forms": "^18.2.0",
"@angular/platform-browser": "^18.2.0",
"@angular/platform-browser-dynamic": "^18.2.0",
"@angular/router": "^18.2.0",
"@stomp/stompjs": "^7.0.0",
"rxjs": "~7.8.0",
"sockjs-client": "^1.6.1",
"tslib": "^2.3.0",
"zone.js": "~0.14.10"
}

Зависимости в pom.xml:

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

    

org.springframework.boot
spring-boot-starter-websocket


org.springframework.boot
spring-boot-starter



org.springframework.boot
spring-boot-starter-test
test


Похоже, это связано с кадром WebSocket, отправленным со стороны клиента. Я пробовал использовать SockJS с библиотекой @stomp/stompjs, но ошибка не устранена.
Кто-нибудь сталкивался с этой проблемой или знает, как исправить эту ошибку? Буду очень признателен за любую помощь!
Шаги, которые я пробовал на данный момент:
  • Проверил, что конечная точка сервера WebSocket /chess-websocket правильно настроена и доступна на http://localhost:8080, Postman может подключиться.
  • Проверил настройки CORS.
  • Обновил все необходимое зависимости, включая @stomp/stompjs и sockjs-client.


Подробнее здесь: https://stackoverflow.com/questions/792 ... lar-spring
Ответить

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

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

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

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

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