修改websocket接收信息后, 判断当前推流车载机的逻辑

master
liuqingkun 3 years ago
parent 1363dc4836
commit f7c0627d6d
  1. 5
      commons/src/main/java/org/yzh/commons/util/BusinessCacheUtil.java
  2. 5
      jtt808-server/src/main/java/io/github/yezhihao/netmc/websocket/WsChannelInboundHandler.java
  3. 18
      jtt808-server/src/main/java/org/yzh/web/service/SendCommandService.java

@ -101,6 +101,11 @@ public class BusinessCacheUtil {
return Integer.parseInt(times);
}
/**
* 设置1078推送为空的次数缓存
*
* @return
*/
public static void setPushEmptyTimes(int times) {
businessCache.put(CACHE_KEY_PUSH_EMPTY_TIMES, String.valueOf(times));
}

@ -60,12 +60,17 @@ public class WsChannelInboundHandler extends SimpleChannelInboundHandler<TextWeb
String clientId = content.split("-")[0].substring(1);
String channelNo = content.split("-")[1];
BusinessCacheUtil.set1078PushDevice(clientId);
// 重置1078推送为空的次数
BusinessCacheUtil.setPushEmptyTimes(0);
String curPush = BusinessCacheUtil.getCurrentPushDevice();
int curPushChannel = BusinessCacheUtil.getCurrentPushChannel();
log.debug(BusinessConstant.LOGGER_PREFIX + " : websocket接收 : 1078推流设备 = {} - {} ", clientId, channelNo);
// 如果1078推送的正在推流的设备 != 808记录的当前推流的设备, 调用接口通知慢直播服务, 当前推流车辆及推流状态信息
if (!clientId.equals(curPush)) {
if (SendCommandUtil.getService() != null) {
log.info(BusinessConstant.LOGGER_PREFIX + " : websocket接收 : 原推流设备 = {} - {} ", curPush, curPushChannel);

@ -79,7 +79,9 @@ public class SendCommandService {
*/
public void sendToDevice() {
if (sessionManager.all() == null || sessionManager.all().size() == 0) {
log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 当前无在线设备, 直接返回 ");
// 当前无在线设备, 直接返回, 通知给慢直播设备离线
log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 sendToDevice : 当前无在线设备, 直接返回, 通知给慢直播设备离线 ");
noticeCarStatus(null, null, BusinessConstant.LIVE_STATUS_OFFLINE);
return;
}
@ -207,6 +209,20 @@ public class SendCommandService {
* @param status
*/
public void noticeCarStatus(String clientId, Integer channelNo, String status) {
// 若1078通知在线, 但此时无在线设备, 不再更新状态
if (BusinessConstant.LIVE_STATUS_ONLINE.equals(status) && (sessionManager.all() == null || sessionManager.all().size() == 0)) {
log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 noticeCarStatus : 当前无在线设备, 将设备强制置为离线, 推送给慢直播服务");
clientId = null;
status = BusinessConstant.LIVE_STATUS_OFFLINE;
}
// 若当前推流状态为离线, 且要更新的状态为等待, 直接返回. 离线状态不用切换等待状态
if (BusinessConstant.LIVE_STATUS_OFFLINE.equals(BusinessCacheUtil.getPushStatus())
&& BusinessConstant.LIVE_STATUS_WAITING.equals(status)) {
log.info(BusinessConstant.LOGGER_PREFIX + " : 自定义推流方法 noticeCarStatus : 离线状态不用切换等待状态");
return;
}
channelNo = channelNo == null ? BusinessConstant.DEFAULT_CHANNEL_NO : channelNo;
// 更新推流车辆和推流状态

Loading…
Cancel
Save