0

我是 MQTT 的新手,所以有人可以帮助我使用 javascript 将 MQTT 与 Mosquitto 连接起来我正在使用此代码,但它给出了错误...

连接失败:AMQJS0007E 套接字错误:未定义。

我的代码是:

<script type='text/javascript' src='jquery-1.10.1.js'></script>

<script type='text/javascript' src="mqttws31.js"></script>
    var client = new Messaging.Client("ns.testingindia.tld", 1883, "myclientid_" + parseInt(Math.random() * 100, 10));

     //如果 websocket/mqtt 连接因任何原因断开连接,则被调用
     client.onConnectionLost = function (responseObject) {
         //根据您的情况,您可以在此处实现重新连接逻辑
         alert("连接丢失:" + responseObject.errorMessage);
     };

     //每当您收到订阅消息时都会调用
     client.onMessageArrived = 函数(消息){
         //对收到的推送消息做一些事情
         $('#messages').append('主题:' + message.destinationName + ' | ' + message.payloadString + ' 
'); }; //连接选项 变量选项 = { 超时:3, //如果连接建立成功则调用 onSuccess: 函数 () { 警报(“已连接”); }, //如果无法建立连接,则调用 onFailure:函数(消息){ document.write("连接失败:" + message.errorMessage); alert("连接失败:" + message.errorMessage); } }; //创建一个新的 Messaging.Message 对象并将其发送到 HiveMQ MQTT Broker var publish = function (payload, topic, qos) { //发送您的消息(也可以将其序列化为 JSON 或 protobuf 或仅使用字符串,没有限制) var message = new Messaging.Message(payload); message.destinationName = 主题; 消息.qos = qos; 客户端.发送(消息); } //]]>
4

3 回答 3

2

一个快速测试你的代理没有引起问题的方法是连接到broker.mqttdashboard.com端口:8000 如果这不起作用我的下一个猜测是你刚刚安装了 mosquitto 并且没有 websockets 服务器,如果你想使用你需要它JS 通过网络直接连接到代理。

现在启动和运行的另一种更快的方法是下载hivemq(试用版支持 25 个连接),它有一个内置 websockets 的 mqtt 代理,将在 Windows 上运行,并将在 5 分钟内启动并运行。

于 2014-08-20T13:31:08.347 回答
2

您正在连接到端口 1883,这是默认的 MQTT 端口。我假设您的意思是使用 Websockets,并且通常会在不同的端口号上配置。如果您使用的代理支持 Websocket,请确保您使用Messaging.Client().

如果您使用 Mosquitto 代理,则需要其bitbucket 存储库中的 1.4 版本来支持 Websocket,但请注意 Mosquitto 1.4 尚未发布。

于 2014-08-20T13:49:24.687 回答
1

您使用的是哪个版本的 Mosquitto?

当前发布版本(1.3.4)不原生支持 Websockets(下一个版本将)

您可以使用带有 mod_websockets 的 lighttpd 之类的东西来提供 websocket 支持(Linux 的说明从这里链接到:http: //test.mosquitto.org/ws.html),或者您可以从头构建一个新版本的 Mosquitto源代码树

于 2014-08-20T12:36:32.740 回答