查看Mqtt的源代码
←
Mqtt
跳转到:
导航
,
搜索
因为以下原因,你没有权限编辑本页:
您刚才请求的操作只有这个用户组中的用户才能使用:
用户
您可以查看并复制此页面的源代码:
== Go 语言 == 起一个 MQTT 客户端监控 dev/gw 或者 dev/gws(加密)主题消息,负责将这些消息解析后写入数据库 用 Go 语言实现这个模块功能,效率高,性能好 === Prepare === Windows 下安装 Go 语言环境: Go 语言官网(https://golang.google.cn/dl/)下载安装包 go1.14.1.windows-amd64.msi 详细可参考:http://c.biancheng.net/view/3992.html Linux 安装 Go lang 编译环境: <source lang=bash> $ sudo apt-get install golang-go $ sudo apt-get install golang-eclipse-paho-dev $ export GOPATH=/usr/share/gocode </source> Refer to: * https://golang.org * http://www.eclipse.org/paho/clients/golang/ <br> === 消息发送=== <source lang=cpp> package main import ( "fmt" "os" "strings" "net/http" "encoding/json" MQTT "git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.golang.git" ) //define a function for the default message handler var f MQTT.MessageHandler = func(client *MQTT.Client, msg MQTT.Message) { fmt.Printf("TOPIC: %s\n", msg.Topic()) fmt.Printf("MSG: %s\n", msg.Payload()) } var uid string = "YOUR_mqtt_uname" var pass string = "YOUR_mqtt_pass" func main() { if len(os.Args[1:]) >= 2 { devid := os.Args[1] cmd := os.Args[2] msg := "" if cmd == "on" { msg = "on" } else if cmd == "off" { msg = "off" } else if cmd == "ota" { msg = "ota" } //pass := get_token(uid) send_msg(devid, msg, pass) } else { help_msg() } } func help_msg() { fmt.Println("Supported cmd:") fmt.Println("\tmqtt dev_id on") fmt.Println("\tmqtt dev_id off") } // 往主题 app2dev/DEV_ID 处发送消息 func send_msg(devid string, msg string, pass string) { opts := MQTT.NewClientOptions().AddBroker("tcp://mqtt.xxx.net:1883") opts.SetClientID("cid_" + devid) opts.SetUsername(devid) opts.SetPassword(pass) opts.SetDefaultPublishHandler(f) c := MQTT.NewClient(opts) if token := c.Connect(); token.Wait() && token.Error() != nil { panic(token.Error()) } mqtt_tx_topic := "app2dev/" + devid token := c.Publish(mqtt_tx_topic, 0, false, msg) token.Wait() } /* func get_token(user_id string) (string) { url := "http://api.xxx.net/user/token" type Body struct { UID string `json:"user_id"` } var body = Body { UID: user_id, } data, err := json.Marshal(body) //fmt.Println(string(data)) if err == nil { resp, err := http.Post(url, "application/json", strings.NewReader(string(data))) if err != nil { fmt.Println(err) } defer resp.Body.Close() dec := json.NewDecoder(resp.Body) var v map[string]interface{} if err := dec.Decode(&v); err != nil { fmt.Printf("error: %v\n", err) } else { if val, ok := v["user_token"].(string); ok { return val } } } return "" } */ </source> <source lang=bash> $ go build mqtt.go $ ./mqtt 12020030001 on $ ./mqtt 12020030001 off </source> <br><br>
返回到
Mqtt
。
个人工具
登录
名字空间
页面
讨论
变换
查看
阅读
查看源代码
查看历史
操作
搜索
导航
首页
社区专页
新闻动态
最近更改
随机页面
帮助
工具箱
链入页面
相关更改
特殊页面