whyczh
2021-04-07 8619f04e7ba899bc468c3439305c00c953dd41a8
更新试验计划websocket接口
1个文件已修改
21 ■■■■■ 已修改文件
src/main/java/com/whyc/ws/TestDataWebSocket.java 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/whyc/ws/TestDataWebSocket.java
@@ -17,7 +17,7 @@
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 {
@@ -42,7 +42,7 @@
    /**
     * 标识当前连接客户端的参数  试验计划id
     */
    private Integer testPlanId;
    //rivate Integer testPlanId;
    /**
     *  用于存所有的连接服务的客户端,这个对象存储是安全的
@@ -51,16 +51,16 @@
    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) {
@@ -68,21 +68,24 @@
        }
    }
    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);