package com.genersoft.iot.vmp.vmanager.gb28181.SseController; 
 | 
  
 | 
import com.genersoft.iot.vmp.gb28181.event.alarm.AlarmEventListener; 
 | 
import io.swagger.annotations.Api; 
 | 
import io.swagger.annotations.ApiImplicitParam; 
 | 
import io.swagger.annotations.ApiImplicitParams; 
 | 
import io.swagger.annotations.ApiOperation; 
 | 
import org.springframework.beans.factory.annotation.Autowired; 
 | 
import org.springframework.stereotype.Controller; 
 | 
import org.springframework.web.bind.annotation.CrossOrigin; 
 | 
import org.springframework.web.bind.annotation.GetMapping; 
 | 
import org.springframework.web.bind.annotation.RequestMapping; 
 | 
import org.springframework.web.bind.annotation.RequestParam; 
 | 
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter; 
 | 
  
 | 
/** 
 | 
 * @description: SSE推送 
 | 
 * @author: lawrencehj 
 | 
 * @data: 2021-01-20 
 | 
 */ 
 | 
@Api(tags = "SSE推送") 
 | 
@CrossOrigin 
 | 
@Controller 
 | 
@RequestMapping("/api") 
 | 
public class SseController { 
 | 
    @Autowired 
 | 
    AlarmEventListener alarmEventListener; 
 | 
  
 | 
    @ApiOperation("浏览器推送") 
 | 
    @ApiImplicitParams({ 
 | 
            @ApiImplicitParam(name = "browserId", value = "浏览器ID", dataTypeClass = String.class), 
 | 
    }) 
 | 
    @GetMapping("/emit") 
 | 
    public SseEmitter emit(@RequestParam String browserId) { 
 | 
        final SseEmitter sseEmitter = new SseEmitter(0L); 
 | 
        try { 
 | 
            alarmEventListener.addSseEmitters(browserId, sseEmitter); 
 | 
        }catch (Exception e){ 
 | 
            sseEmitter.completeWithError(e); 
 | 
        } 
 | 
        return sseEmitter; 
 | 
    } 
 | 
} 
 |