| | |
| | | import java.util.List; |
| | | import java.util.concurrent.CopyOnWriteArraySet; |
| | | |
| | | @ServerEndpoint(value = "/testDataWebSocket/{testPlanId}",encoders = WebSocketEncoder.class) |
| | | @ServerEndpoint(value = "/testDataWebSocket",encoders = WebSocketEncoder.class) |
| | | @Component |
| | | @Slf4j |
| | | public class TestDataWebSocket { |
| | |
| | | /** |
| | | * 标识当前连接客户端的参数 试验计划id |
| | | */ |
| | | private Integer testPlanId; |
| | | //rivate Integer testPlanId; |
| | | |
| | | /** |
| | | * 用于存所有的连接服务的客户端,这个对象存储是安全的 |
| | |
| | | |
| | | private static CopyOnWriteArraySet<TestDataWebSocket> webSockets = new CopyOnWriteArraySet<>(); |
| | | @OnOpen |
| | | public void onOpen(Session session,@PathParam("testPlanId") Integer testPlanId){ |
| | | public void onOpen(Session session){ |
| | | System.out.println("试验计划实时数据websocket..."); |
| | | this.session = session; |
| | | this.testPlanId = testPlanId; |
| | | //this.testPlanId = testPlanId; |
| | | webSockets.add(this); |
| | | } |
| | | |
| | | |
| | | @OnMessage |
| | | public void onMessage(Integer message,Session session) { |
| | | public void onMessage(String message,Session session) { |
| | | try { |
| | | this.sendMessage(message); |
| | | } catch (IOException e) { |
| | |
| | | } |
| | | } |
| | | |
| | | public void sendMessage(Integer testPlanId) throws IOException{ |
| | | public void sendMessage(String testPlanId) throws IOException{ |
| | | Thread thread = new Thread("TestDataWebSocket"){ |
| | | @Override |
| | | public void run() { |
| | | while (true) { |
| | | try { |
| | | Response model = null; |
| | | Response model = new Response(); |
| | | //获取试验计划数据 |
| | | TestPlan testPlan = testPlanService.getOneById(testPlanId); |
| | | TestPlan testPlan = testPlanService.getOneById(Integer.parseInt(testPlanId)); |
| | | //获取试验参试设备 |
| | | if(testPlan==null){ |
| | | break; |
| | | } |
| | | String devices = testPlan.getDevices(); |
| | | String[] devIds = devices.split(","); |
| | | List<MotorState> list = new ArrayList<>(); |
| | | for (String deviceId:devIds) { |
| | | MotorState motorState = motorStateService.getByDeviceId(Integer.valueOf(deviceId)); |
| | | MotorState motorState = motorStateService.getByDeviceId(Integer.parseInt(deviceId)); |
| | | list.add(motorState); |
| | | } |
| | | model.set(1,list); |