project init
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package com.sv.socket;
|
||||
|
||||
import com.common.DeviceDTO;
|
||||
import com.enums.DeviceStatusEnum;
|
||||
import com.sv.entity.Device;
|
||||
import com.sv.service.oms.DeviceService;
|
||||
import com.ydd.framework.core.common.dto.ResponseDTO;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URLEncoder;
|
||||
|
||||
@RestController
|
||||
public class DeviceController {
|
||||
|
||||
@Value("${face.url}")
|
||||
private String faceUrl;
|
||||
|
||||
|
||||
@Resource
|
||||
private ApplicationContext applicationContext;
|
||||
|
||||
|
||||
@Resource
|
||||
private DeviceService deviceService;
|
||||
|
||||
@RequestMapping("/device/reconnect/{id}")
|
||||
public ResponseDTO reconnect(@PathVariable("id") Integer deviceId) {
|
||||
Device device = deviceService.findById(deviceId);
|
||||
synchronized (device.getStream().intern()) {
|
||||
if (device != null && DeviceStatusEnum.OFFLINE.value.equals(device.getStatus())) {
|
||||
deviceService.reconnect(deviceId);
|
||||
try {
|
||||
DeviceDTO deviceDTO = new DeviceDTO();
|
||||
BeanUtils.copyProperties(device, deviceDTO);
|
||||
URI uri = new URI("ws://" + faceUrl + "/video?url=" + URLEncoder.encode(device.getStream(), "utf-8"));
|
||||
DeviceSocket client = new DeviceSocket(applicationContext, deviceDTO, uri);
|
||||
client.connectBlocking();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
deviceService.offline(deviceId);
|
||||
}
|
||||
}
|
||||
return ResponseDTO.ok();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user