Springboot整合Websocket遇到的坑
2020-09-26 本文已影响0人
惜时流光沿途留殇
一、使用Springboot内嵌的tomcat启动websocket
1.添加ServerEndpointExporter配置bean
@Configuration
public class WebSocketConfig {
/**
* 服务器节点
*
* 如果使用独立的servlet容器,而不是直接使用springboot的内置容器,就不要注入ServerEndpointExporter,因为它将由容器自己提供和管理
* @return
*/
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
2.在接收连接的类加上@ServerEndpoint和@Component
@ServerEndpoint("/connect")
@Component
二、使用外部tomcat容器启动websocket
1.删除ServerEndpointExporter配置bean
2.接收连接的类删除@Component
三、websocket关闭连接异常
如果客户端关闭了websocket,但服务端没有监听到关闭事件,即onClose方法没有调用,这是会发生的情况
此时如果服务端向客户端推送消息,会出现异常告诉开发者:关闭了一个连接,并重新调用onClose方法