要解决"Angular 7 + Java Spring - Websocket 返回 404"的问题,首先需要确保以下几个方面的设置正确:
@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("/ws").withSockJS();
}
}
import { Injectable } from '@angular/core';
import { Stomp } from '@stomp/stompjs';
import * as SockJS from 'sockjs-client';
@Injectable()
export class WebSocketService {
private stompClient;
constructor() {
const socket = new SockJS('http://localhost:8080/ws');
this.stompClient = Stomp.over(socket);
}
connect() {
this.stompClient.connect({}, () => {
this.stompClient.subscribe('/topic/example', (message) => {
console.log('Received message: ', message.body);
});
});
}
sendMessage(message: string) {
this.stompClient.send('/app/example', {}, message);
}
}
请注意,这里的URL "http://localhost:8080/ws" 应该与您的Java Spring后端的WebSocket配置中的URL一致。
@Controller
public class WebSocketController {
@MessageMapping("/example")
@SendTo("/topic/example")
public String handleExample(String message) {
System.out.println("Received message: " + message);
return "Hello, " + message;
}
}
在这个示例中,当收到来自前端的消息时,它会将消息打印到控制台,并将"Hello, "前缀添加到消息并返回给前端。
通过确保以上这些设置正确,您应该能够解决"Angular 7 + Java Spring - Websocket 返回 404"的问题。如果问题仍然存在,请检查浏览器的开发者工具网络选项卡以查看更多详细信息,并确认WebSocket连接是否成功建立。