chenyc
2022-09-20 a6b4fd6c0219bb41415cd232daa12ca28eb8add7
src/samples/sockteStomp.ts
@@ -30,18 +30,23 @@
            return de.deviceName===resultInfo.deviceNumber
        })
        console.log(deviceInfo,'更具设备number查找到的设备')
        console.log(resultInfo)
        if(deviceInfo!==undefined){
            switch(deviceInfo.deviceType){
                case '读卡器':
                    sockteStore().setdkqSockte(
                        {
                            deviceName:resultInfo.deviceNumber,
                            type:"读卡器",
                            result:resultInfo.result,
                            resultTime:resultInfo.resultTime,
                            state:2
                        }
                    )
                    console.log('读卡器收到消息')
                    const res=JSON.parse(resultInfo.result)
                    if(res.clientCode!==null){
                        sockteStore().setdkqSockte(
                            {
                                deviceName:resultInfo.deviceNumber,
                                type:"读卡器",
                                result:resultInfo.result,
                                resultTime:resultInfo.resultTime,
                                state:2
                            }
                        )
                    }
                    break
                case "体重秤":
                    console.log(resultInfo,'体重秤')
@@ -49,7 +54,7 @@
                        {
                            deviceName:resultInfo.deviceNumber,
                            type:"体重秤",
                            result:resultInfo.result,
                            result:Number(resultInfo.result).toString(),
                            resultTime:resultInfo.resultTime,
                            state:2
                        }
@@ -107,26 +112,26 @@
}
const writePatient=(resultInfo:any)=>{
    // 给一个时间变化
    const da=new Date().toTimeString()
    console.log(da)
    const info={
        id:resultInfo.patientInfo===null?0:resultInfo.patientInfo.id,
        code:resultInfo.patientInfo===null?'':resultInfo.patientInfo.code,
        name:resultInfo.patientInfo===null?0:resultInfo.patientInfo.patientName,
        patientAvatarIcon:resultInfo.patientInfo===null?0:resultInfo.patientInfo.patientAvatarIcon,
        name:resultInfo.patientInfo===null?'':resultInfo.patientInfo.patientName,
        patientAvatarIcon:resultInfo.patientInfo===null?'':resultInfo.patientInfo.patientAvatarIcon,
        deviceCode:resultInfo.deviceCode===null?"":resultInfo.deviceCode,
        hemoCode:resultInfo.hemoCode===null?"":resultInfo.hemoCode,
        pureWeight:resultInfo.pureWeight===null?"":resultInfo.pureWeight
        pureWeight:resultInfo.pureWeight===null?"":resultInfo.pureWeight,
        datetime:da,
        isScheduled:resultInfo.isScheduled
    }
    // 写入vuex里
    patientInfoStore().setpatientInfo(info)
    console.log('播放声音')
    // sound.play("https://dhcdn.leon056.com/hemo/autoselfsign/step2.mp3")
}
// 订阅结果事件返回函数
const  callback = function(message:any) {
    console.log('接收到数据-----',message.body)
    if (message.body!==undefined) {
        const data=JSON.parse(message.body)
        writeResult(data)
@@ -146,6 +151,7 @@
}
const PatientCallback=function(message:any){
    if (message.body) {
        console.log('00000000000000',message.body)
        const data=JSON.parse(message.body)
        console.log(data,'患者信息读取')
        writePatient(data)
@@ -166,6 +172,7 @@
    isErrConnectBackCalled = true
    const pcName= sockteStore().pcName
    console.log("链接成功",stompClient,pcName)
    sockteStore().setsockteIsLink(true)
    // 订阅患者信息服务
    if(stompClient!==null){
        // 订阅患者信息事件
@@ -179,36 +186,36 @@
    // 更新sockte链接状态
    sockteStore().setsockteIsLink(true)
    console.log(sockteStore().isLink)
    if(devices!==undefined&&devices.length>0){
        // 更新sockte链接状态
        sockteStore().setsockteIsLink(true)
        console.log(sockteStore().isLink)
        console.log(devices)
        if(devices!==undefined&&devices!=null &&devices.length>0){
            devices.forEach(de=>{
                if(stompClient!==null){
                    stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback)
                    // stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState)
                    stompClient.send(`/app/device/request/${clientCode}/${de.deviceName}`, {}, JSON.stringify({"deviceNumber":de.deviceName}));
                }
            })
        }
    }
}
const disconnectCallBack=function(){
    console.log("disconnect");
    // sockte订阅服务关闭完全有post 来代替
    // if(devices!==undefined &&devices!=null&&devices.length>0){
    //     // 更新sockte链接状态
    //     sockteStore().setsockteIsLink(true)
    //     console.log(sockteStore().isLink)
    //     console.log(devices)
    //     if(devices!==undefined&&devices!=null &&devices!=null &&devices.length>0){
    //         devices.forEach(de=>{
    //             if(stompClient!==null){
    //                 console.log()
    //                 stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback)
    //                 stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState)
    //                 stompClient.send(`/app/device/request/${clientCode}/${de.deviceName}`, {}, JSON.stringify({"deviceNumber":de.deviceName}));
    //             }
    //         })
    //     }
    // }
}
const error_callback=function(error:any){
    console.log('链接错误',error);
    sockteStore().setsockteIsLink(false)
    setTimeout(()=>{
        console.log('10秒之后重连',sockteNum++)
        console.log('60秒之后重连',sockteNum++)
        const socket = new WebSocket('ws://hemobs.icoldchain.cn/broadcast')
        stompClient?.disconnect(disconnectCallBack,{})
        stompClient = Stomp.over(socket)
        stompClient.connect({}, connectCallback,error_callback)
        stompClient?.disconnect(()=>{
            console.log("disconnected!");
            stompClient = Stomp.over(socket)
            stompClient.connect({}, connectCallback,error_callback)
        },{})
    },60000)
}
// 创建客户端链接
@@ -244,4 +251,4 @@
        stompClient.send(`/app/patient/info/set`,{},JSON.stringify(mode))
    }
}
export {creatorClient,sendPationCode,sendPationSet}
export {creatorClient,sendPationCode,sendPationSet,writeResult}