gpt4 book ai didi

javascript - 使用 IP 地址作为主机名时,Paho MQTT 主机参数无效?

转载 作者:行者123 更新时间:2023-11-30 19:35:24 24 4
gpt4 key购买 nike

修订:请注意我现在使用的 IP 地址是 10.0.0.15,我发布到 MQTT 代理的设备是 10.0.0.122。这仍然是所有通过终端工作的。

我想我已经有了 MQTT 连接器。在遇到下面帖子中描述的问题后,我已经向前迈进了

Can't connect to localhost Mosquitto Broker with Javascript?

我现在看到以下错误。

         mqttws31.js:1585 Uncaught Error: AMQJS0013E Invalid argument 
169.254.118.199 for host.
at new M (mqttws31.js:1585)
at startConnect (n.js:29)
at HTMLInputElement.onclick ((index):107)

根据js文件表示匹配错误。我尝试将 IP 地址作为前缀 wss://169.254.118.199 但这并不能解决问题。您知道是什么原因造成的吗?

我试过以下方法

 wss://169.254.118.199
ws://169.254.118.199
wss://localhost
tcp://169.254.118.199
tcp://localhost

它们都产生相同的错误

这是错误指向的 mqttws31.js 中的代码位。

          if (arguments.length == 2) {
// host: must be full ws:// uri
// port: clientId
clientId = port;
uri = host;
var match = uri.match(/^(wss?):\/\/((\[(.+)\])|([^\/]+?))(:(\d+))?
(\/.*)$/);
if (match) {
host = match[4]||match[2];
port = parseInt(match[7]);
path = match[8];
} else {
--> this is where error is pointing throw new Error(format(ERROR.INVALID_ARGUMENT,[host,"host"]));
}
} else {
if (arguments.length == 3) {
clientId = path;
path = "/mqtt";
}
if (typeof port !== "number" || port < 0)
throw new Error(format(ERROR.INVALID_TYPE, [typeof port, "port"]));
if (typeof path !== "string")
throw new Error(format(ERROR.INVALID_TYPE, [typeof path, "path"]));

var ipv6AddSBracket = (host.indexOf(":") != -1 && host.slice(0,1) != "[" &&
host.slice(-1) != "]");
uri = "ws://"+(ipv6AddSBracket?"["+host+"]":host)+":"+port+path;
}

编辑:在打印输出中,我看到以下内容被发送到我网页上的 Paho 客户端:

    Connecting to: 10.0.0.122 on port: 8083
Using the following client value: clientID-64

我希望能成功连接IP地址并获取MQTT有效负载

最佳答案

要得到您看到的错误,您不能使用您在其他问题中发布的代码:

clientID = "clientID-" + parseInt(Math.random() * 100);

// Fetch the hostname/IP address and port number from the form
host = document.getElementById("host").value;
port = document.getElementById("port").value;
// Print output for the user in the messages div

// Initialize new Paho client connection
client = new Paho.MQTT.Client(host, Number(port), clientID);

只有当您只将 2 个参数传递给 Paho.MQTT.Client() 构造函数而不是 3 个时,才会发生该错误。在这种情况下,第一个参数被解释为完整的 URI(例如 ws://10.0.0.122:8083/mqtt),第二个作为ClientID。

关于javascript - 使用 IP 地址作为主机名时,Paho MQTT 主机参数无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55997109/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com