spring boot下使用WebSocket javax时报错:Error during WebSocket handshake:404

1,448 阅读1分钟

spring boot下使用WebSocket javax时报错:

WebSocket connection to 'ws://localhost:8888/websocket' failed: Error during WebSocket handshake: Unexpected response code: 404

代码如下:

前端

//获得WebSocket对象
var websocket = new WebSocket("ws://localhost:8888/websocket");  

后端

@ServerEndpoint(value = "/websocket")
@Service
public class MsgWebSocket {
    /**
     * 收到消息
     *
     * @param message 客户端发送过来的消息
     * @param session
     */
    @OnMessage
    public void onMessage(String message, Session session) {
        ...
    }
}   

解决方案:

step1. pom中引入jar包

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

step2. 添加Bean ServerEndpointExporter

@Component
public class WebSocketConfig {

    /**
     * 使用spring boot时,使用的是spring-boot的内置容器,
     * 如果要使用WebSocket,需要注入ServerEndpointExporter
     *
     * @return
     */
    @Bean
    public ServerEndpointExporter serverEndpointExporter() {
        return new ServerEndpointExporter();
    }
}

完整代码:

git@github.com:valsong/blog-demo.git
中的websocket-javax项目