zouxuan 5 年之前
父節點
當前提交
86af92dec1
共有 1 個文件被更改,包括 34 次插入4 次删除
  1. 34 4
      edu-im/edu-im-server/src/main/java/com/keao/edu/im/mec/im/IMHelper.java

+ 34 - 4
edu-im/edu-im-server/src/main/java/com/keao/edu/im/mec/im/IMHelper.java

@@ -19,7 +19,6 @@ import org.springframework.stereotype.Component;
 import java.net.HttpURLConnection;
 import java.net.URLEncoder;
 import java.util.List;
-import java.util.stream.Collectors;
 
 /**
  * Created by weiqinxiao on 2019/2/28.
@@ -238,7 +237,7 @@ public class IMHelper {
      * @throws Exception
      */
     @Async
-    public IMApiResultInfo startRecord(String roomId, Long registrationId, List<RoomMember> roomMembers) throws Exception {
+    public void startRecord(String roomId, Long registrationId, List<RoomMember> roomMembers) throws Exception {
         if (roomId == null) {
             throw new IllegalArgumentException("Paramer 'roomId' is required");
         }
@@ -272,13 +271,44 @@ public class IMHelper {
 
         HttpURLConnection conn = httpHelper.createIMRtcPostHttpConnection("/rtc/record/start.json", "application/json",roomId);
         httpHelper.setBodyParameter(body, conn);
-        IMApiResultInfo resultInfo = JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+        againRecord(conn,body,registrationId);
+
+        /*IMApiResultInfo resultInfo = JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
         if(resultInfo.getResultCode() == 10000){
             redisTemplate.opsForValue().set(resultInfo.getRecordId(),registrationId.toString());
         }else {
             log.error("直播视频录制失败:body : {},resultInfo : {}",body,resultInfo);
+            int i = 1;
+            while (i<=3){
+
+                i++;
+            }
+        }*/
+    }
+
+    void againRecord(HttpURLConnection conn,String body,Long registrationId) throws Exception {
+        IMApiResultInfo resultInfo = JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+        if(resultInfo.getResultCode() == 10000){
+            redisTemplate.opsForValue().set(resultInfo.getRecordId(),registrationId.toString());
+        }else {
+            log.error("直播视频录制失败:body : {},resultInfo : {} 准备重试",body,resultInfo);
+            int i = 1;
+            while (i<=3){
+                Thread.sleep(5000l);
+                IMApiResultInfo imApiResultInfo = JSON.parseObject(httpHelper.returnResult(conn, body), IMApiResultInfo.class);
+                log.error("直播视频录制失败:resultInfo : {} 第{}次重试",imApiResultInfo,i);
+                i++;
+                if(imApiResultInfo.getResultCode() == 10000){
+                    redisTemplate.opsForValue().set(imApiResultInfo.getRecordId(),registrationId.toString());
+                    log.info("直播视频录制成功:第{}次重试",i);
+                    return;
+                }
+                if(i > 3){
+                    log.error("直播视频录制失败:resultInfo : {} 重试结束",imApiResultInfo);
+                    return;
+                }
+            }
         }
-        return resultInfo;
     }
 
     /**