mosquitto 1.4 - 一旦 运行 ACL 启用,得到 "Socket error on client <unknown>, disconnecting"
mosquitto 1.4 - once running with ACL enabled, gets "Socket error on client <unknown>, disconnecting"
按照 Jeremy Gooch 的说明,参见 http://goochgooch.co.uk/2014/08/01/building-mosquitto-1-4/, i installed mosquitto over websockets on RPi. i can sub/pub messages to test site http://test.mosquitto.org/ws.html
从那时起,我在 mosquitto.conf 中启用了用户和主题访问控制以进行更多测试,但奇怪的是,当我再次启动 mosquitto 时,我每秒都会看到套接字错误...
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 上搜索,也没有结果,有人可以帮忙吗?谢谢。
1429857949: Sending CONNACK to 127.0.0.1 (0, 5)
CONNACK return 代码 5 表示连接未被授权。如果它
与 allow_anonymous=true 一起工作,那么听起来您的客户不是
发送用户名/或发送的用户名和密码不正确。
您似乎有一个 Paho Python 客户 运行。
我遇到了同样的问题,我的解决方案是我没有关闭连接。添加 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();
}
}
按照 Jeremy Gooch 的说明,参见 http://goochgooch.co.uk/2014/08/01/building-mosquitto-1-4/, i installed mosquitto over websockets on RPi. i can sub/pub messages to test site http://test.mosquitto.org/ws.html
从那时起,我在 mosquitto.conf 中启用了用户和主题访问控制以进行更多测试,但奇怪的是,当我再次启动 mosquitto 时,我每秒都会看到套接字错误...
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 上搜索,也没有结果,有人可以帮忙吗?谢谢。
1429857949: Sending CONNACK to 127.0.0.1 (0, 5)
CONNACK return 代码 5 表示连接未被授权。如果它 与 allow_anonymous=true 一起工作,那么听起来您的客户不是 发送用户名/或发送的用户名和密码不正确。
您似乎有一个 Paho Python 客户 运行。
我遇到了同样的问题,我的解决方案是我没有关闭连接。添加 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();
}
}