springboot 集成 websocket
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
新建websocket服务
@Component
@ServerEndpoint("/websocket/{clientId}")
public class WebSocket {
// 存放每个客户端对应的 webSocket对象
private static CopyOnWriteArraySet<WebSocket> webSocketSet = new CopyOnWriteArraySet<>();
// 与某个客户端的连接会话,需要通过它来给客户端发送数据
private Session session;
// 客户端id,通过它来确定给那个客户端发送消息
private String clientId;
/**
* 连接建立成功调用的方法
* @param clientId
*/
@OnOpen
public void onOpen(Session session, @PathParam("clientId") String clientId){
System.out.println("连接建立:" + clientId);
this.session = session;
this.clientId = clientId;
webSocketSet.add(this);
}
/**
* 连接关闭调用的方法
*/
@OnClose
public void onClose(){
System.out.println("连接关闭:" + this.clientId);
webSocketSet.remove(this);
}
/**
* 实现服务器主动推送
* @param messageObj
*/
public void sendMessage(Object messageObj){
String text = JSON.toJSONString(messageObj);
this.session.getAsyncRemote().sendText(text);
}
/**
* 服务器向客户端发送消息
* @param clientId
* @param messageObj
*/
public void sendInfo(String clientId,Object messageObj){
for (WebSocket webSocket : webSocketSet){
if (webSocket.clientId.equals(clientId)){
webSocket.sendMessage(messageObj);
}
}
}
}
在需要的类中,引入websocket服务,发送消息
public class Test {
@Autowired
private WebSocket websocket;
public void test(){
websocket.sendInfo("测试客户端id","测试消息");
}
}
正文到此结束
- 本文标签: websocket Spring Boot
- 版权声明: 本站原创文章,于2022年03月20日由丙火发布,转载请注明出处