小编Mel*_*ssa的帖子

使用 Goroutine 订阅 MQTT 消息

我目前有一个 Go 代码,可以订阅和打印发布到某个主题的传感器数据。这是我的代码:

package main

import (
    "crypto/tls"
    "flag"
    "fmt"
    //"log"
    "os"
    "os/signal"
    "strconv"
    "syscall"
    "time"
    MQTT "github.com/eclipse/paho.mqtt.golang"
)

func onMessageReceived(client MQTT.Client, message MQTT.Message) {
    //fmt.Printf("Received message on topic: %s\nMessage: %s\n", message.Topic(), message.Payload())
    fmt.Printf("%s\n", message.Payload())
}

func main() {
    //MQTT.DEBUG = log.New(os.Stdout, "", 0)
    //MQTT.ERROR = log.New(os.Stdout, "", 0)
    c := make(chan os.Signal, 1)
    signal.Notify(c, os.Interrupt, syscall.SIGTERM)

    hostname, _ := os.Hostname()

    server := flag.String("server", "tcp://test.mosquitto.org:1883", "The full url of the MQTT server to connect to ex: tcp://127.0.0.1:1883")
    topic := flag.String("topic", …
Run Code Online (Sandbox Code Playgroud)

go goroutine mqtt

2
推荐指数
1
解决办法
2022
查看次数

在单独的进程上运行Goroutines(多处理)

我目前有一个MQTT代码,可以订阅主题,打印出收到的消息,然后将更多指令发布到新主题.在订阅/打印在一个够程完成,出版在另一个goroutine中进行.这是我的代码:

var wg, pg sync.WaitGroup
// All messages are handled here - printing published messages and publishing new messages
var f MQTT.MessageHandler = func(client MQTT.Client, msg MQTT.Message) {

wg.Add(1)
pg.Add(1)
    go func() {
        defer wg.Done()
        fmt.Printf("%s\n", msg.Payload())
        //fmt.Println(os.Getpid())
    }()
go func(){
    defer pg.Done()
    message := ""
    //Changing configurations
    if strings.Contains(string(msg.Payload()), "arduinoLED") == true {
        message = fmt.Sprintf("change configuration")
    }
    if  strings.Contains(string(msg.Payload()), "NAME CHANGED") == true{
        message = fmt.Sprintf("change back")
    }
    // Publish further instructions to "sensor/instruction" …
Run Code Online (Sandbox Code Playgroud)

multiprocessing go goroutine

2
推荐指数
1
解决办法
1382
查看次数

如何检查值是否为浮点数

我想检查我传递的值是否是浮点数。我有一段代码可以检查它是某个字符串还是浮点数。如果两者都不是,则给出错误。这是代码:

if sensorData.Passport.Geolocation.Latitude != "gps" && sensorData.Passport.Geolocation.Latitude != "internet" && sensorData.Passport.Geolocation.Latitude != "unknown" && sensorData.Passport.Geolocation.Latitude != //a float nmber{
            fmt.Println("Incorrect option")
        }
Run Code Online (Sandbox Code Playgroud)

如何检查数据是否为浮点数?

types go

-2
推荐指数
1
解决办法
6690
查看次数

标签 统计

go ×3

goroutine ×2

mqtt ×1

multiprocessing ×1

types ×1