项目要求要做一个订阅第三方的websocket数据,然后就记录了一个小例子、

pom文件,引入依赖

<!--websocket-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

websocket的配置 

package com.mp.core.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

import javax.websocket.server.ServerEndpointConfig;

/**
* @author lrx
* @create 2020-08-14 19:33
* websocket配置类
*/
@Configuration
public class WebSocketConfig{

@Bean
public ServerEndpointExporter serverEndpointExporter() {
return new ServerEndpointExporter();
}

}
package com.mp.core.websocket;

import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;
import javax.websocket.*;
import java.io.IOException;
import java.net.URI;

/**
* @author lrx
* @description: TODO 摄像头事件socket控制台
* @date 2022/10/12 10:13
*/
@Slf4j
@Component
@ClientEndpoint
public class CameraEventSocketClient {
private String serverUrl="接收地址";
private Session session;

@PostConstruct
void init() {
try {
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
URI uri = URI.create(serverUrl);
session = container.connectToServer(CameraEventSocketClient.class, uri);
} catch (DeploymentException | IOException e) {
e.printStackTrace();
}
}

/**
* 打开连接
* @param session
*/
@OnOpen
public void onOpen(Session session) {
log.info("打开");
this.session = session;
}

/**
* 接收消息
* @param text
*/
@OnMessage
public void onMessage(String text) {
log.info("接收消息:"+text);

}

/**
* 异常处理
* @param throwable
*/
@OnError
public void onError(Throwable throwable) {
throwable.printStackTrace();
}

/**
* 关闭连接
*/
@OnClose
public void onClosing() throws IOException {
log.info("关闭");
session.close();
}

/**
* 主动发送消息
*/
public void send(String message) {
this.session.getAsyncRemote().sendText(message);
}
public void close() throws IOException{
if(this.session.isOpen()){
this.session.close();
}
}
}

结果: