工具、版本
开发工具:IntelliJ IDEA
JDK:1.8
spring-boot:2.6.0(事例使用,可根据自己版本调整)
maven:3.6.3
依赖jar
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.49</version>
</dependency>
项目结构
结构介绍
一、websocket服务注册到spring容器
@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}
}
二、开放服务节点
@Slf4j
@Component
@ServerEndpoint("/socket/server/{clientId}")
public class SocketServer {
private Logger logger = LoggerFactory.getLogger(SocketServer.class);
@OnOpen
public void onOpen(@PathParam("clientId") String clientId, Session session) throws IOException {
logger.info("客户端{},上线。", clientId);
session.getBasicRemote().sendText("欢迎上线。");
}
@OnClose
public void onClose(@PathParam("clientId") String clientId) {
logger.info("客户端{},离线。", clientId);
}
@OnError
public void one rror(@PathParam("clientId") String clientId, Throwable throwable) {
logger.info("客户端{},异常及异常原因:{}。", clientId, throwable);
}
@OnMessage
public void handler(String receiveMessage, Session session) {
//接收消息
logger.info("客户端发送消息内容:{}。", receiveMessage);
try {
session.getBasicRemote().sendText("收到:" + receiveMessage);
} catch (IOException e) {
e.printStackTrace();
}
}
}
测试
测试地址:http://coolaf.com/tool/chattest