From 5fc7472d0ec6bff69b874f33eeccc30541f7f6df Mon Sep 17 00:00:00 2001
From: songjun <leon0756@gmail.com>
Date: 星期五, 15 七月 2022 19:55:44 +0800
Subject: [PATCH] fix socket reconnect bug
---
src/samples/sockteStomp.ts | 35 +++++++++++++++++++----------------
1 files changed, 19 insertions(+), 16 deletions(-)
diff --git a/src/samples/sockteStomp.ts b/src/samples/sockteStomp.ts
index 0007296..bb325ce 100644
--- a/src/samples/sockteStomp.ts
+++ b/src/samples/sockteStomp.ts
@@ -96,15 +96,7 @@
sockteStore().setweightState(resultInfo.status)
break
case "血压计":
- sockteStore().setxyjSockte(
- {
- deviceName:resultInfo.deviceName,
- type:"血压计",
- result:resultInfo.result,
- resultTime:resultInfo.resultTime,
- state:0
- }
- )
+ sockteStore().setXtjState(resultInfo.status)
break
default:
console.log('有配置类型没有匹配')
@@ -168,41 +160,51 @@
}
}
+var isErrConnectBackCalled = false;
const connectCallback=function(){
- const pcName= os.hostname()
+ isErrConnectBackCalled = true
+ const pcName= sockteStore().pcName
+ console.log("链接成功",stompClient,pcName)
// 订阅患者信息服务
if(stompClient!==null){
+ // 订阅患者信息事件
stompClient.subscribe(`/queue/patient/info/${pcName}`,PatientCallback)
+ // 订阅配置文件事件
stompClient.subscribe(`/queue/workstation/config/set/${clientCode}/${pcName}`,configCallback)
+ // 发送配置文件到服务端
stompClient.send(`/app/workstation/config/set/${clientCode}/${pcName}`,{},JSON.stringify({"clientCode":clientCode,"machineName":pcName}))
}
- console.log("链接成功",stompClient,pcName)
+
// 更新sockte链接状态
sockteStore().setsockteIsLink(true)
console.log(sockteStore().isLink)
console.log(devices)
- if(devices!==undefined&&devices.length>0){
+ if(devices!==undefined&&devices!=null &&devices.length>0){
devices.forEach(de=>{
if(stompClient!==null){
stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/result`,callback)
- // /queue/{clientCode}/{deviceName}/keepalive
- // stompClient.subscribe(`/queue/${clientCode}/${de.deviceName}/keepalive`,callbackState)
+ 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");
+}
+
const error_callback=function(error:any){
console.log('链接错误',error);
setTimeout(()=>{
console.log('10秒之后重连')
console.log(devices,'设备列表')
const socket = new WebSocket('ws://hemobs.icoldchain.cn/broadcast')
+ stompClient?.disconnect(disconnectCallBack,{})
stompClient = Stomp.over(socket)
stompClient.connect({}, connectCallback,error_callback)
-
},10000)
}
// 创建客户端链接
@@ -220,12 +222,13 @@
* @param codeStr
*/
const sendPationCode=(codeStr:string)=>{
+ const pcName= sockteStore().pcName
const mode={
clientCode:clientCode,
queryCode:codeStr
}
if(stompClient!==null){
- stompClient.send(`/app/patient/info/get/${os.hostname()}`,{},JSON.stringify(mode))
+ stompClient.send(`/app/patient/info/get/${pcName}`,{},JSON.stringify(mode))
}
}
/**
--
Gitblit v1.8.0