|
@@ -16,21 +16,21 @@ import (
|
|
|
// SseScanDevice 扫描设备
|
|
|
func SseScanDevice(paramMap map[string]string) {
|
|
|
var scanUrl = global.Config.Gateway.BaseUrl + global.Config.Gateway.ScanUrl
|
|
|
- ws, _, err := websocket.DefaultDialer.Dial(global.Config.Websocket.WSUrl, nil)
|
|
|
- if err != nil {
|
|
|
- fmt.Println("Websocket client init error" + err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
+
|
|
|
deviceMap := make(map[string]models.DeviceScanned)
|
|
|
if len(paramMap) > 0 {
|
|
|
for key, value := range paramMap {
|
|
|
scanUrl += "&" + key + "=" + value
|
|
|
}
|
|
|
}
|
|
|
+ //events := make(chan *sse.Event)
|
|
|
client := sse.NewClient(scanUrl)
|
|
|
go func() {
|
|
|
-
|
|
|
fmt.Println("开始SSE")
|
|
|
+ //err := client.SubscribeChan("messages", events)
|
|
|
+ //if err != nil {
|
|
|
+ // return
|
|
|
+ //}
|
|
|
err := client.SubscribeRaw(func(msg *sse.Event) {
|
|
|
//fmt.Println(string(msg.Data))
|
|
|
var data models.DeviceScannedFromGateway
|
|
@@ -53,24 +53,33 @@ func SseScanDevice(paramMap map[string]string) {
|
|
|
return
|
|
|
}
|
|
|
}()
|
|
|
-
|
|
|
- if err != nil {
|
|
|
- fmt.Println(err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- timer := time.NewTimer(time.Duration(global.Config.Gateway.ScanSecond) * time.Millisecond)
|
|
|
- select {
|
|
|
- case <-timer.C:
|
|
|
- messageMap := make(map[string]map[string]models.DeviceScanned)
|
|
|
- messageMap[constant.MessageTypeDeviceScanned] = deviceMap
|
|
|
- bytes, err := json.Marshal(messageMap)
|
|
|
- if err != nil {
|
|
|
- fmt.Printf("json异常:%s", err.Error())
|
|
|
- return
|
|
|
- }
|
|
|
- err = ws.WriteMessage(websocket.TextMessage, bytes)
|
|
|
- if err != nil {
|
|
|
- return
|
|
|
+ ticket := time.NewTicker(time.Duration(global.Config.Gateway.ScanSecond) * time.Millisecond)
|
|
|
+ for range ticket.C {
|
|
|
+ fmt.Println("当前时间:" + time.Now().Format("2006-01-02 15:04:05"))
|
|
|
+ if len(deviceMap) > 0 {
|
|
|
+ ws, _, err := websocket.DefaultDialer.Dial(global.Config.Websocket.WSUrl, nil)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("Websocket client init error" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ messageMap := make(map[string]string)
|
|
|
+ messageMap["msgType"] = constant.MessageTypeDeviceScanned
|
|
|
+ marshal, err := json.Marshal(deviceMap)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("data parse Error :" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ messageMap["data"] = string(marshal)
|
|
|
+ bytes, err := json.Marshal(messageMap)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Printf("json异常:%s", err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err = ws.WriteMessage(websocket.TextMessage, bytes)
|
|
|
+ if err != nil {
|
|
|
+ fmt.Println("消息发送异常:" + err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -84,15 +93,26 @@ func SseOpenNotify() {
|
|
|
fmt.Println("Websocket client init error" + err.Error())
|
|
|
return
|
|
|
}
|
|
|
+
|
|
|
client := sse.NewClient(notifyUrl)
|
|
|
err = client.SubscribeRaw(func(msg *sse.Event) {
|
|
|
s := string(msg.Data)
|
|
|
fmt.Println("notify receive data :" + s)
|
|
|
+
|
|
|
flag := strings.HasPrefix(s, "E840") || strings.HasPrefix(s, "E841") || strings.HasPrefix(s, "E823")
|
|
|
if !flag {
|
|
|
//websocket 通知数据
|
|
|
//msgMap := make(map[string]string)
|
|
|
//msgMap[]
|
|
|
+ var receiveData models.DeviceDataReceived
|
|
|
+ errJson := json.Unmarshal(msg.Data, &receiveData)
|
|
|
+ if errJson != nil {
|
|
|
+ fmt.Println("receive data parse error:" + errJson.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ messageMap := make(map[string]string)
|
|
|
+ messageMap["msgType"] = constant.MessageTypeData
|
|
|
+ messageMap["data"] = string(msg.Data)
|
|
|
err := ws.WriteMessage(websocket.TextMessage, msg.Data)
|
|
|
if err != nil {
|
|
|
fmt.Println(errmsg.SendMessageError + err.Error())
|