golang 용 paho 라이브러리 ( "github.com/eclipse/paho.golang/paho")에서 mosquitto 2.0 브로커에 연결할 수없는 것 같습니다. 누구든지 내 방식의 오류를 지적 할 수 있습니까?
paho 채팅 예제 에서 연결 논리를 가져와 내 로컬 호스트 서버에 연결을 시도했지만 이유 코드 135 (승인되지 않음)를 얻었습니다. 그런 다음 mosquitto_pub로 mosquitto 서버에 연결을 시도했습니다. 두 경우 모두 동일한 사용자 이름과 비밀번호를 사용했습니다. mosquitto 로그 출력은 다음과 같습니다.
1608068903: New connection from 127.0.0.1:58794 on port 1883.
1608068903: Client <unknown> disconnected, not authorised.
1608069349: New connection from 127.0.0.1:58908 on port 1883.
1608069349: New client connected from 127.0.0.1:58908 as test (p5, c1, k60, u'username').
내가 사용중인 mosquitto_pub 명령은 다음과 같습니다.
snap run mosquitto.pub -h localhost -t hello -u username -P password -m hello -V mqttv5 -i test
golang 코드는 다음과 같습니다.
import (
"context"
"fmt"
"github.com/eclipse/paho.golang/paho"
log "github.com/sirupsen/logrus"
"net"
)
func Test() {
conn, err := net.Dial("tcp", "localhost:1883")
if err != nil {
log.Fatalf("Failed to connect to %s: %s", "localhost", err)
}
c := paho.NewClient(paho.ClientConfig{
Router: paho.NewSingleHandlerRouter(func(m *paho.Publish) {
log.Printf("%s : %s", m.Properties.User["chatname"], string(m.Payload))
}),
Conn: conn,
})
username := "username"
password := "password"
cp := &paho.Connect{
KeepAlive: 30,
ClientID: "test",
CleanStart: false,
Username: username,
Password: []byte(password),
}
ca, err := c.Connect(context.Background(), cp)
if ca.ReasonCode != 0 {
log.Fatalf("Failed to connect to %s : %d - %s", "localhost", ca.ReasonCode, ca.Properties.ReasonString)
}
if err != nil {
log.Fatalln(err)
}
fmt.Printf("Connected to %s\n", "localhost")
}
추가 UsernameFlag
및 PasswordFlag
에 paho.Connect
예를 들면 :
cp := &paho.Connect{
KeepAlive: 30,
ClientID: "test",
CleanStart: false,
Username: username,
UsernameFlag: true,
Password: []byte(password),
PasswordFlag: true,
}
paho.golang
문서 작업을 필요로하지만, 이것은에 덮여 MQTT V5 사양 . Mosquitto 2.0.1로 이것을 테스트하고 성공적으로 연결했습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다