1.在配置websocketIntercepterss时 拦截请求的地址一定要先被MVC DispachterServlet中的Servlet-Mapping url拦截。
2.基于Xml配置的握手拦截器出现如下情况:
WebSocket connection to 'ws://localhost:8080/springmvc/hello.do' failed: Error during WebSocket handshake: Unexpected response code: 200
可能是你开启了
<websocket:sockjs/>
这点很坑 。
<bean id="HelloHandler" class="com.project.websocket.HelloHandler"/>
<websocket:handlers allowed-origins="*">
<!-- 配置消息处理bean和路径的映射关系 -->
<websocket:mapping path="/hello.do" handler="HelloHandler"/>
<!-- 配置握手拦截器 -->
<websocket:handshake-interceptors>
<bean class="com.project.interceptor.WebHandShakeInterceptor"/>
</websocket:handshake-interceptors>
<!-- 开启sockjs,去掉则关闭sockjs -->
<websocket:sockjs/>
</websocket:handlers>
<!-- 配置websocket消息的最大缓冲区长度 -->
<bean class="org.springframework.web.socket.server.standard.ServletServerContainerFactoryBean">
<property name="maxTextMessageBufferSize" value="8192"/>
<property name="maxBinaryMessageBufferSize" value="8192"/>
</bean>
</beans>