|
|
@@ -154,47 +154,61 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|
|
if (mediaServerItem == null) {
|
|
|
return;
|
|
|
}
|
|
|
+ // 数据库记录
|
|
|
List<StreamPushItem> pushList = getPushList(mediaServerId);
|
|
|
+ Map<String, StreamPushItem> pushItemMap = new HashMap<>();
|
|
|
+ // redis记录
|
|
|
+ List<StreamInfo> streamInfoPushList = redisCatchStorage.getStreams(mediaServerId, "PUSH");
|
|
|
+ Map<String, StreamInfo> streamInfoPushItemMap = new HashMap<>();
|
|
|
if (pushList.size() > 0) {
|
|
|
- Map<String, StreamPushItem> pushItemMap = new HashMap<>();
|
|
|
for (StreamPushItem streamPushItem : pushList) {
|
|
|
pushItemMap.put(streamPushItem.getApp() + streamPushItem.getStream(), streamPushItem);
|
|
|
}
|
|
|
- zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{
|
|
|
- if (mediaList == null) return;
|
|
|
- String dataStr = mediaList.getString("data");
|
|
|
-
|
|
|
- Integer code = mediaList.getInteger("code");
|
|
|
- List<StreamPushItem> streamPushItems = null;
|
|
|
- if (code == 0 ) {
|
|
|
- if (dataStr != null) {
|
|
|
- streamPushItems = handleJSON(dataStr, mediaServerItem);
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (streamInfoPushList.size() > 0) {
|
|
|
+ for (StreamInfo streamInfo : streamInfoPushList) {
|
|
|
+ streamInfoPushItemMap.put(streamInfo.getApp() + streamInfo.getStreamId(), streamInfo);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ zlmresTfulUtils.getMediaList(mediaServerItem, (mediaList ->{
|
|
|
+ if (mediaList == null) return;
|
|
|
+ String dataStr = mediaList.getString("data");
|
|
|
+
|
|
|
+ Integer code = mediaList.getInteger("code");
|
|
|
+ List<StreamPushItem> streamPushItems = null;
|
|
|
+ if (code == 0 ) {
|
|
|
+ if (dataStr != null) {
|
|
|
+ streamPushItems = handleJSON(dataStr, mediaServerItem);
|
|
|
}
|
|
|
+ }
|
|
|
|
|
|
- if (streamPushItems != null) {
|
|
|
- for (StreamPushItem streamPushItem : streamPushItems) {
|
|
|
- pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
|
|
|
- }
|
|
|
+ if (streamPushItems != null) {
|
|
|
+ for (StreamPushItem streamPushItem : streamPushItems) {
|
|
|
+ pushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
|
|
|
+ streamInfoPushItemMap.remove(streamPushItem.getApp() + streamPushItem.getStream());
|
|
|
}
|
|
|
- Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
|
|
|
- if (offlinePushItems.size() > 0) {
|
|
|
- String type = "PUSH";
|
|
|
- streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
|
|
|
- for (StreamPushItem offlinePushItem : offlinePushItems) {
|
|
|
- JSONObject jsonObject = new JSONObject();
|
|
|
- jsonObject.put("serverId", userSetup.getServerId());
|
|
|
- jsonObject.put("app", offlinePushItem.getApp());
|
|
|
- jsonObject.put("stream", offlinePushItem.getStream());
|
|
|
- jsonObject.put("register", false);
|
|
|
- jsonObject.put("mediaServerId", mediaServerId);
|
|
|
- redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
|
|
- // 移除redis内流的信息
|
|
|
- redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlinePushItem.getApp(), offlinePushItem.getStream());
|
|
|
- }
|
|
|
+ }
|
|
|
+ Collection<StreamPushItem> offlinePushItems = pushItemMap.values();
|
|
|
+ if (offlinePushItems.size() > 0) {
|
|
|
+ String type = "PUSH";
|
|
|
+ streamPushMapper.delAll(new ArrayList<>(offlinePushItems));
|
|
|
+ }
|
|
|
+ Collection<StreamInfo> offlineStreamInfoItems = streamInfoPushItemMap.values();
|
|
|
+ if (offlineStreamInfoItems.size() > 0) {
|
|
|
+ String type = "PUSH";
|
|
|
+ for (StreamInfo offlineStreamInfoItem : offlineStreamInfoItems) {
|
|
|
+ JSONObject jsonObject = new JSONObject();
|
|
|
+ jsonObject.put("serverId", userSetup.getServerId());
|
|
|
+ jsonObject.put("app", offlineStreamInfoItem.getApp());
|
|
|
+ jsonObject.put("stream", offlineStreamInfoItem.getStreamId());
|
|
|
+ jsonObject.put("register", false);
|
|
|
+ jsonObject.put("mediaServerId", mediaServerId);
|
|
|
+ redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
|
|
+ // 移除redis内流的信息
|
|
|
+ redisCatchStorage.removeStream(mediaServerItem.getId(), "PUSH", offlineStreamInfoItem.getApp(), offlineStreamInfoItem.getStreamId());
|
|
|
}
|
|
|
- }));
|
|
|
- }
|
|
|
+ }
|
|
|
+ }));
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -211,6 +225,8 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|
|
List<StreamInfo> streamInfoList = redisCatchStorage.getStreams(mediaServerId, type);
|
|
|
if (streamInfoList.size() > 0) {
|
|
|
for (StreamInfo streamInfo : streamInfoList) {
|
|
|
+ // 移除redis内流的信息
|
|
|
+ redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("serverId", userSetup.getServerId());
|
|
|
jsonObject.put("app", streamInfo.getApp());
|
|
|
@@ -218,8 +234,6 @@ public class StreamPushServiceImpl implements IStreamPushService {
|
|
|
jsonObject.put("register", false);
|
|
|
jsonObject.put("mediaServerId", mediaServerId);
|
|
|
redisCatchStorage.sendStreamChangeMsg(type, jsonObject);
|
|
|
- // 移除redis内流的信息
|
|
|
- redisCatchStorage.removeStream(mediaServerId, type, streamInfo.getApp(), streamInfo.getStreamId());
|
|
|
}
|
|
|
}
|
|
|
}
|