[英]WebSocket with Spring Boot and JavaScript
这是我在 JavaScript 客户端和 Java 服务器之间创建 WebSocket 通道的简单尝试。
// java websocket server configuration with spring boot
// server port: 8080 set in the "application.yml"
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer{
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/websocket")
.setAllowedOrigins("*")
.withSockJS();
}
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
registry.setApplicationDestinationPrefixes("/app")
.enableSimpleBroker("/notification");
}
}
// js websocket client configuration with "webstomp-client"
import webstomp from 'webstomp-client';
const connection = new WebSocket('ws://localhost:8080/websocket');
const stompClient = webstomp.over(connection);
stompClient.connect(()=>{
stompClient.subscribe('/app/notification', () => console.log('Connection established with server'));
});
控制台显示以下内容:
WebSocket 连接到“ws://localhost:8080/websocket”失败:WebSocket 握手期间出错:意外响应代码:200
我看了很多其他帖子,其中大多数与允许起源有关。 我尝试将源设置为localhost
以及本地 IP 地址,但没有成功。
我错过了什么? 任何帮助都将是巨大的。
编辑:如果相关,客户端是使用create-react-app
的。
编辑:客户端打开: http:localhost:3000
,服务器打开: http:localhost:8080
。
您正在服务器端使用 SockJS 配置端点,但您没有在客户端使用 SockJS。 这就是为什么您得到 200 状态代码而不是 101 的原因。在客户端使用 SockJS(而不是原始 WebSocket)或在服务器端删除withSockJS()
。
console.log("IDK") // idk to be honest
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.