在上一篇文章中,我是引入javaee-api
建立maven工程搭建的websocket实例,并且分析并解决了出现NoClassDefFoundError: org/apache/commons/io/FileUtils
的原因,链接:添加链接描述本文是引入spring-boot-starter-websocket
建立springboot工程搭建的websocket实例
pom.xml
<!--spring boot的支持-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.0.RELEASE</version>
</parent>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
创业务逻辑类
@Component
public class HandlerTest extends TextWebSocketHandler {
@Override
public void handleTextMessage(WebSocketSession session, TextMessage message)
throws IOException {
System.out.println("接收到消息:" + message.getPayload());
// 向客户端发送消息
session.sendMessage(new TextMessage("消息已收到"));
}
}
@Override
public void afterConnectionEstablished(WebSocketSession session) throws
Exception {
session.sendMessage(new TextMessage( "欢迎连接websocket服务"));
}
@Override
public void afterConnectionClosed(WebSocketSession session, CloseStatus status)
throws Exception {
System.out.println("断开连接!");
}
}
编写配置类
@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketConfigurer {
@Autowired
private HandlerTest handlerTest ;
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(this.handlerTest , "/ws");
}
}
启动工程,访问ws://127.0.0.1:8080/ws
(访问工具见上一篇文章)发现连接不上,查看控制台,发现有跨域问题,改进代码
registry.addHandler(this.handlerTest , "/ws").setAllowedOrigins("*");
重启,再次访问,成功