折腾了将近一天,终于搭建好websocket服务,中间遇到不少的坑,现在记录一下,也供他们参考少走弯路。
开发环境:<spring.version>4.2.5.RELEASE</spring.version> Tomcat8 jdk8 maven
spring搭建websocket有两种方式:
1、利用javaee-api以注解的形式搭建,见上一篇博文《spring+tomcat8实现websocket 》
2、利用spring-websocket包搭建,本篇介绍的内容。
注意:这种方式必须注释掉这个,不然会冲突
<!-- <dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency> -->
需要用到的spring包:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
<version>${spring.version}</version>
</dependency>
其他辅助包:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-version}</version>
</dependency>
Java代码:两个类 WebSocketConfig 和 SystemWebSocketHandler
前端调式页面代码
最后说下几个坑点:
1、html页面访问限制的问题的:403 Forbidden
2、web.xml配置需要升级成3.1
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
3、web.xml里面所有过滤器需要加上
<async-supported>true</async-supported>
如:
<servlet>
<servlet-name>SpringMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>