3

Jeremy Gooch の指示に従って、http://goochgooch.co.uk/2014/08/01/building-mosquitto-1-4/ を参照してください。RPi の websockets に mosquitto をインストールしました。私はテスト サイトhttp://test.mosquitto.org/ws.htmlにメッセージを sub/pub できます

その時点から、より多くのテストのために mosquitto.conf でユーザーとトピックのアクセス制御を有効にしましたが、奇妙な点は、mosquitto を再度起動すると、1 秒あたりのソケット エラーが表示されることです...

sudo /usr/local/sbin/mosquitto -v -c /etc/mosquitto/mosquitto.conf

 1429857948: mosquitto version 1.4 (build date 2015-04-20 22:04:51+0800) starting
1429857948: Config loaded from /etc/mosquitto/mosquitto.conf.
1429857948: Opening ipv4 listen socket on port 1883.
1429857948: Opening ipv6 listen socket on port 1883.
1429857948: Warning: Address family not supported by protocol
1429857949: New connection from 127.0.0.1 on port 1883.
1429857949: Sending CONNACK to 127.0.0.1 (0, 5)
1429857949: Socket error on client <unknown>, disconnecting.
1429857950: New connection from 127.0.0.1 on port 1883.
1429857950: Sending CONNACK to 127.0.0.1 (0, 5)
...

構成ファイルを変更して ACL のみを有効にし、他のすべてをコメントアウトします。ソケット エラーはまだ残っています。構成ファイルは次のようになります。

sudo nano /etc/mosquitto/mosquitto.conf

autosave_interval 1800
persistence true
persistence_file m2.db
persistence_location /var/tmp/
connection_messages true
log_timestamp true
log_dest stderr
log_type error
log_type warning
log_type debug

allow_anonymous false
password_file /etc/mosquitto/mqtt.pw
acl_file /etc/mosquitto/mqtt.acl

port 1883
protocol mqtt

サンプルの password_file と acl_file を使用してテストしましたが、同じエラーが発生しました。Googleで検索しても結果がありません。誰かこれについて助けてもらえますか? ありがとう。

4

2 に答える 2

8

1429857949: CONNACK を 127.0.0.1 (0, 5) に送信しています

CONNACK 戻りコード 5 は、接続が許可されなかったことを意味します。allow_anonymous=true で動作する場合、クライアントがユーザー名を送信していないか、正しいユーザー名とパスワードを送信していないようです。

Paho Python クライアントが実行されているようです。

于 2015-04-24T20:44:17.957 に答える
0

私は同じ問題を抱えていました。私の解決策は、接続を閉じていないということでした。client.Disconnect() を追加すると、問題が解決しました。

コード:

public IEnumerator ooverhere()
{
    MqttClient client;
    client = new MqttClient(urlPath, port, false, MqttSslProtocols.None, null, null);
    client.ProtocolVersion = MqttProtocolVersion.Version_3_1;

    byte code = client.Connect(Guid.NewGuid().ToString(), user, pass);
    if (code == 0)
    {
        Debug.Log("successful connection ...");

        //client.MqttMsgPublishReceived += client_recievedMessage;

        Debug.Log("your client id is: " + client.ClientId);

        client.Subscribe(new string[] { "example" }, new byte[] { 0 });
        client.Publish("Helpme", Encoding.UTF8.GetBytes("@" + 0));
        yield return client;

        client.Disconnect();
    }
}
于 2018-04-26T13:32:01.523 に答える