Commit 90c413f7 authored by duanruiming's avatar duanruiming

[add] 优化灯态信息推送Kafka,添加websocket客户端

parent 3fd11a1b
...@@ -6,6 +6,7 @@ import net.wanji.databus.po.CrossInfoPO; ...@@ -6,6 +6,7 @@ import net.wanji.databus.po.CrossInfoPO;
import net.wanji.databus.po.ManufacturerInfoPO; import net.wanji.databus.po.ManufacturerInfoPO;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.springframework.boot.CommandLineRunner; import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
...@@ -19,6 +20,7 @@ import java.util.Objects; ...@@ -19,6 +20,7 @@ import java.util.Objects;
* @date 2023/05/23 9:44 * @date 2023/05/23 9:44
*/ */
@Component @Component
@Order(1)
public class CrossInfoCache implements CommandLineRunner { public class CrossInfoCache implements CommandLineRunner {
@Resource @Resource
......
package net.wanji.utc.cache;
import lombok.extern.slf4j.Slf4j;
import net.wanji.databus.po.CrossInfoPO;
import net.wanji.utc.websocket.WebSocketClientHandler;
import org.springframework.boot.CommandLineRunner;
import org.springframework.core.annotation.Order;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;
import javax.websocket.ContainerProvider;
import javax.websocket.Session;
import javax.websocket.WebSocketContainer;
import java.net.URI;
import java.util.List;
/**
* @author duanruiming
* @date 2024/01/10 17:28
*/
@Component
@Slf4j
@Order(2)
public class WebSocketClient implements CommandLineRunner {
public static Session session;
@Override
public void run(String... args) throws Exception {
try {
if (WebSocketClient.session != null) {
WebSocketClient.session.close();
}
WebSocketContainer container = ContainerProvider.getWebSocketContainer();
List<CrossInfoPO> crossInfoList = CrossInfoCache.crossInfoList;
if (!CollectionUtils.isEmpty(crossInfoList)) {
for (CrossInfoPO crossInfoPO : crossInfoList) {
String crossId = crossInfoPO.getId();
String uri = "ws://localhost:32000/utc/signalStatus/" + crossId + ",preload";
session = container.connectToServer(WebSocketClientHandler.class, URI.create(uri));
}
}
} catch (Exception e) {
log.error("websocketClient初始化失败", e);
throw new Exception(e);
}
}
}
package net.wanji.utc.websocket;
import lombok.extern.slf4j.Slf4j;
import net.wanji.utc.cache.WebSocketClient;
import org.springframework.stereotype.Component;
import javax.websocket.*;
/**
* @author duanruiming
* @date 2024/01/10 17:28
*/
@ClientEndpoint
@Component
@Slf4j
public class WebSocketClientHandler {
@OnOpen
public void onOpen(Session session) {
WebSocketClient.session = session;
}
@OnMessage
public void recieveMessage(String message) {
}
@OnError
public void error(Throwable t) {
}
@OnClose
public void close() {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment