Explorar el Código

add 媒体设备刷新通道

18339543638 hace 3 años
padre
commit
d402615fee

+ 8 - 16
jetlinks-manager/media-manager/src/main/java/org/jetlinks/community/media/controller/MediaDeviceController.java

@@ -1,7 +1,5 @@
 package org.jetlinks.community.media.controller;
 
-import cn.hutool.json.JSONObject;
-import com.google.common.collect.Maps;
 import gov.nist.javax.sip.stack.SIPDialog;
 import io.swagger.v3.oas.annotations.Operation;
 import io.swagger.v3.oas.annotations.Parameter;
@@ -11,12 +9,10 @@ import lombok.extern.slf4j.Slf4j;
 import org.hswebframework.web.authorization.annotation.*;
 import org.hswebframework.web.crud.service.ReactiveCrudService;
 import org.hswebframework.web.crud.web.reactive.ReactiveServiceCrudController;
-import org.hswebframework.web.crud.web.reactive.ReactiveServiceQueryController;
 import org.hswebframework.web.exception.BusinessException;
 import org.jetlinks.community.media.bean.StreamInfo;
 import org.jetlinks.community.media.entity.MediaDevice;
-import org.jetlinks.community.media.gb28181.result.PlayResult;
-import org.jetlinks.community.media.gb28181.result.WVPResult;
+import org.jetlinks.community.media.enums.DeviceState;
 import org.jetlinks.community.media.message.MediaMessage;
 import org.jetlinks.community.media.message.MediaMessageReply;
 import org.jetlinks.community.media.service.LocalMediaDeviceChannelService;
@@ -26,25 +22,17 @@ import org.jetlinks.community.media.service.LocalPlayService;
 import org.jetlinks.community.media.session.VideoStreamSessionManager;
 import org.jetlinks.community.media.storage.impl.RedisCacheStorageImpl;
 import org.jetlinks.community.media.transmit.callback.DeferredResultHolder;
-import org.jetlinks.community.media.transmit.callback.RequestMessage;
 import org.jetlinks.community.media.transmit.cmd.SipCommander;
 import org.jetlinks.community.utils.SubscribeKeyGenerate;
-import org.jetlinks.core.device.DeviceOperationBroker;
 import org.jetlinks.core.device.DeviceRegistry;
 import org.jetlinks.core.device.StandaloneDeviceMessageBroker;
 import org.jetlinks.core.exception.DeviceOperationException;
 import org.jetlinks.core.message.DeviceMessageReply;
-import org.jetlinks.core.server.MessageHandler;
-import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
-import org.springframework.web.context.request.async.DeferredResult;
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
-import reactor.util.function.Tuple2;
-
 import java.time.Duration;
 import java.util.*;
-import java.util.stream.Collectors;
 
 /**
  * @author lifang
@@ -172,8 +160,11 @@ public class MediaDeviceController implements ReactiveServiceCrudController<Medi
         String key = DeferredResultHolder.CALLBACK_CMD_CATALOG + id;
         return mediaDeviceService.findById(id)
             .switchIfEmpty(Mono.error(new BusinessException("设备已离线,无法更新通道最新信息")))
-            .flatMap(device->
-                messageBroker.handleReply(id,key,Duration.ofSeconds(10))
+            .flatMap(device->{
+                if (DeviceState.offline==device.getState()) {
+                    return Mono.error(new BusinessException("设备已离线,无法更新通道最新信息"));
+                }
+                return messageBroker.handleReply(id,key,Duration.ofSeconds(10))
                     .onErrorResume(DeviceOperationException.class,error-> {
                         //设备下线
                         mediaDeviceService.deviceOffline(device);
@@ -188,7 +179,8 @@ public class MediaDeviceController implements ReactiveServiceCrudController<Medi
                     })
                         .then(Mono.empty()))
                     .flatMap(this::convertReply)
-                    .singleOrEmpty()
+                    .singleOrEmpty();
+                }
             );
     }
 

+ 5 - 4
jetlinks-manager/media-manager/src/main/java/org/jetlinks/community/media/service/LocalPlayService.java

@@ -236,10 +236,11 @@ public class LocalPlayService  {
         if (device == null) {
             return Mono.empty();
         }
-        return Mono.justOrEmpty(device.getMediaServerId())
-            .flatMap(mediaServerItemService::findById)
-            //找不到设备相应的媒体流服务器则根据负载均衡获取相应的媒体流服务器
-            .switchIfEmpty(mediaServerItemService.getMediaServerForMinimumLoad());
+        return mediaServerItemService.getDefaultMediaServer();
+//        return Mono.justOrEmpty(device.getMediaServerId())
+//            .flatMap(mediaServerItemService::findById)
+//            //找不到设备相应的媒体流服务器则根据负载均衡获取相应的媒体流服务器
+//            .switchIfEmpty(mediaServerItemService.getMediaServerForMinimumLoad());
     }
 
     private Mono<StreamInfo> onPublishHandler(MediaServerItem mediaServerItem, JSONObject resonse, String deviceId, String channelId) {