AMQJS0011E无效状态未连接

eli*_*nti 0 javascript mqtt paho

我正在尝试在树莓派paho的MQTT Broker上发布消息。我已经使用Visual Studio 2015(在Windows 10上)构建了一个“应用程序”,并且正在使用波纹模拟器对其进行测试,但是我总是会收到此错误

AMQJS0011E未连接无效状态。

我还尝试导出文件,并在Linux系统上使用firefox将其打开为常规网页,但出现了同样的错误,因此我认为与Windows无关。

通过按钮触发的函数是playCanzone()

function playCanzone() {
console.log("play premuto");
mqttHost = '192.168.9.184';
topic = 'testTopic';
client = new Paho.MQTT.Client(mqttHost, 8080, "myclientid_" + parseInt(Math.random() * 100, 10));
onConnect();//publish('mEssaggio', 'testtopic/bar', 2);
}

// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;

// connect the client
client.connect({ onSuccess: onConnect });

// called when the client connects
function onConnect() {
// Once a connection has been made, make a subscription and send a message.
console.log("onConnect");
client.subscribe(topic);
message = new Paho.MQTT.Message("Hello");
message.destinationName = topic;
client.send(message);
}

// called when the client loses its connection
function onConnectionLost(responseObject) {
if (responseObject.errorCode !== 0) {
    console.log("onConnectionLost:" + responseObject.errorMessage);
}
}

// called when a message arrives
function onMessageArrived(message) {
console.log("onMessageArrived:" + message.payloadString);
}
Run Code Online (Sandbox Code Playgroud)

har*_*llb 6

您在连接打开之前尝试发送的东西。

这应该表现得更好,并确保一切按顺序进行

var client; topic;

function playCanzone() {
  console.log("play premuto");
  var mqttHost = '192.168.9.184';
  topic = 'testTopic';
  client = new Paho.MQTT.Client(mqttHost, 8080, "myclientid_" + parseInt(Math.random() * 100, 10));
  // set callback handlers
  client.onConnectionLost = onConnectionLost;
  client.onMessageArrived = onMessageArrived;

  // connect the client
  client.connect({ onSuccess: onConnect });
}

// called when the client connects
function onConnect() {
  // Once a connection has been made, make a subscription and send a message.
  console.log("onConnect");
  client.subscribe(topic);
  var message = new Paho.MQTT.Message("Hello");
  message.destinationName = topic;
  client.send(message);
}

// called when the client loses its connection
function onConnectionLost(responseObject) {
  if (responseObject.errorCode !== 0) {
    console.log("onConnectionLost:" + responseObject.errorMessage);
  }
}

// called when a message arrives
function onMessageArrived(message) {
  console.log("onMessageArrived:" + message.payloadString);
}
Run Code Online (Sandbox Code Playgroud)