package com.genersoft.iot.vmp.media.zlm.event; import com.genersoft.iot.vmp.service.IMediaServerService; import com.genersoft.iot.vmp.service.IPlayService; import com.genersoft.iot.vmp.service.IStreamProxyService; import com.genersoft.iot.vmp.service.IStreamPushService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationListener; import org.springframework.context.event.EventListener; import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; import java.text.SimpleDateFormat; /** * @description: 在线事件监听器,监听到离线后,修改设备离在线状态。 设备在线有两个来源: * 1、设备主动注销,发送注销指令 * 2、设备未知原因离线,心跳超时 * @author: swwheihei * @date: 2020年5月6日 下午1:51:23 */ @Component public class ZLMStatusEventListener { private final static Logger logger = LoggerFactory.getLogger(ZLMStatusEventListener.class); @Autowired private IStreamPushService streamPushService; @Autowired private IStreamProxyService streamProxyService; @Autowired private IMediaServerService mediaServerService; @Autowired private IPlayService playService; private SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Async @EventListener public void onApplicationEvent(ZLMOnlineEvent event) { logger.info("ZLM上线事件触发,ID:" + event.getMediaServerId()); streamPushService.zlmServerOnline(event.getMediaServerId()); streamProxyService.zlmServerOnline(event.getMediaServerId()); } @Async @EventListener public void onApplicationEvent(ZLMOfflineEvent event) { logger.info("ZLM离线事件触发,ID:" + event.getMediaServerId()); // 处理ZLM离线 mediaServerService.zlmServerOffline(event.getMediaServerId()); streamProxyService.zlmServerOffline(event.getMediaServerId()); streamPushService.zlmServerOffline(event.getMediaServerId()); playService.zlmServerOffline(event.getMediaServerId()); } }