package ipc import ( "encoding/json" "errors" "os" "strconv" "serfNode/config" "serfNode/logger" ) const ( configRequestUrl = "http://127.0.0.1:1880/config" ) type ConfigResponse struct { NodeName string `json:"nodename"` VirtualIp string `json:"virtualip"` NsqServerIp string `json:"nsqserverip"` NsqServerPort string `json:"nsqserverport"` EthDevice string `json:"ethdevice"` } // 响应的数据格式 /* [ { "nodename": "7876", "virtualip": "7686", "nsqserverip": "6786", "nsqserverport": "67867", "ethdevice": "" } ] */ func GetConfigFromNodeRed() error { config.SerfConf = &config.SerfConfig{ ClusterName: "aps-client-cluster", NodeName: strconv.Itoa(os.Getpid()), BindAddr: "0.0.0.0:5000", RPCAddr: "0.0.0.0:7373", RPCPort: 7373, AuthKey: "cqmyg,ysdss", } body, err := HttpPost(configRequestUrl, nil) var response []ConfigResponse err = json.Unmarshal(body, &response) if err != nil { logger.Warn(err.Error()) } else { if len(response) > 0 { if response[0].NodeName == "" { err = errors.New("node-red 返回节点名称为空") return err } // 修改节点id config.SerfConf.NodeName = response[0].NodeName config.VRRPConf.VirtualIp = response[0].VirtualIp config.NsqConf.ServerAddr = response[0].NsqServerIp + ":" + response[0].NsqServerPort } else { err = errors.New("node-red 响应内容为空") } } return err }