1. 引入依赖
<!--websocket连接需要使用到的包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
2. 添加配置类
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;
/**
* Created on 2021-08-21 18:12
*
* @author
* description:websocket配置,用于开启websocket支持
*/
@Configuration
@EnableWebSocket
public class WebSocketConfig {
@Bean
public ServerEndpointExporter serverEndpointExporter(){
return new ServerEndpointExporter();
}
}
3. 添加websocket类
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import javax.websocket.*;
import javax.websocket.server.PathParam;
import javax.websocket.server.ServerEndpoint;
import java.io.IOException;
/**
* Created on 2021-12-10 16:31
*
* @author
* description:长连接
*/
@Component
@Data
@Slf4j
@ServerEndpoint(value = "/websocket/{xxx}")
public class WebSocket {
/**
* 建立连接时调用
* @param session
* @param config
*/
@OnOpen
public void onOpen(Session session, EndpointConfig config){
System.out.println(session + "建立了连接");
}
/**
* 断开连接时调用
* @param session
*/
@OnClose
public void onClose(Session session) {
System.out.println(session + "断开了连接");
}
/**
* 消息到达时调用
*
* @param xxx
* @param message
* @param session
*/
@OnMessage
public void onMessage(@PathParam("xxx") String xxx, String message, Session session){
System.out.println(message);
try {
session.getBasicRemote().sendText(message);
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 发生错误时调用
*
* @param session
* @param throwable
*/
@OnError
public void onError(Session session, Throwable throwable) {
System.out.println("发生错误!");
}
}