java做WebSocket后台处理,发现前端请求一直404. 最后发现是SpringBoot的问题. SpringBoot使用WebSocket的时候需要额外注意几点.
1:引入与boot相关的WebSocket依赖,如果引入其他WebSocket依赖会导致无法配置 WebSocketConfig
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>1.3.5.RELEASE</version>
</dependency>
2: 创建WebSocketConfig类 进行配置,这个是Spring项目必须要写的,不然会一直404
package com.sqltest.demo.controller;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
3: 创建WebSocket 类 进行java处理
package com.sqltest.demo.controller;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint(value = "/websocket")
@Component
public class WebSocket {
@OnOpen
public void onOpen(Session session) {
System.out.println("连接成功");
}
}
4: 创建html页面的WebSocket 连接
<!DOCTYPE HTML>
<html>
<head>
<title>My WebSocket</title>
</head>
<body>
</body>
<script type="text/javascript">
var websocket = null;
//判断当前浏览器是否支持WebSocket
if('WebSocket' in window){
websocket = new WebSocket("ws://localhost:8080/websocket");
}
else{
alert('不支持webSocket')
}
</script>
</html>
5:访问前端页面,查看java控制台,你就会发现连接成功了.