saas-smartAi通信协议标准库
gongshangguo
2022-03-03 5e803d6a5de79c01c94b358f6e31322e87c29f76
更新库
1个文件已修改
14 ■■■■ 已修改文件
client/client.go 14 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
client/client.go
@@ -210,7 +210,7 @@
}
// 发送消息
func (c *Client) WriteMsg(senderId string, msgType aiot.MSG_TYPE, reqType aiot.REQ_TYPE, data []byte, msgProto *aiot.MsgIdProto) (*aiot.Protocol, error) {
func (c *Client) writeMsg(senderId string, msgType aiot.MSG_TYPE, reqType aiot.REQ_TYPE, data []byte, msgProto *aiot.MsgIdProto) (*aiot.Protocol, error) {
    // 关闭的连接不能写入
    if c.IsClosed() {
        c.Logger.Error("Can not write msg on the closed chan", zap.Any("msgType", msgType), zap.Any("reqType", reqType), zap.Any("data", string(data)))
@@ -219,6 +219,7 @@
    // 拼装并发送消息
    body := &aiot.Protocol{
        Receiver: aiot.RECEIVER_TO_SAAS,
        SenderId: senderId,
        MsgType: msgType,
        ReqType: reqType,
@@ -238,12 +239,17 @@
        }
    }()
    // 通道已关闭,不能写入
    if c.IsClosed() {
        errMsg := "Can not write msg into closed chain"
        c.Logger.Warn(errMsg, zap.Any("msg",body))
        return errors.New(errMsg)
    }
    body.Receiver = aiot.RECEIVER_TO_SAAS
    // 消息ID默认处理
    if body.MsgProto == nil {
        body.MsgProto = GetMsgProto("")
    }
    msgData, err := json.Marshal(body)
    if err != nil {
        c.Logger.Error("Fail to Marshal send data", zap.Error(err))
@@ -259,7 +265,7 @@
    c.Logger.Debug("registering...")
    data := c.deviceRegister
    msgData, _ := json.Marshal(data)
    _, err := c.WriteMsg(c.deviceId, aiot.MSG_TYPE_REGISTER, aiot.REQ_TYPE_REQUEST, msgData, GetMsgProto(""))
    _, err := c.writeMsg(c.deviceId, aiot.MSG_TYPE_REGISTER, aiot.REQ_TYPE_REQUEST, msgData, GetMsgProto(""))
    if err != nil {
        c.Logger.Error("Fail to send device register", zap.Any("msg", msgData))
    }
@@ -283,7 +289,7 @@
                t.Stop()
                return
            }
            go c.WriteMsg(c.deviceId, aiot.MSG_TYPE_HEART_BEAT, aiot.REQ_TYPE_REQUEST, pingData, GetMsgProto(""))
            go c.writeMsg(c.deviceId, aiot.MSG_TYPE_HEART_BEAT, aiot.REQ_TYPE_REQUEST, pingData, GetMsgProto(""))
        }
    }
}