Я пытался использовать версию javacscript MQTT-клиента Eclipse Paho для доступа к Google IOTCore MQTT Bridge, как предлагается здесь:
https://cloud.google.com/iot/docs/how-tos/mqtt-bridge
Однако, что бы я ни делал, любая попытка подключиться с известными хорошими учетными данными (работа с другими клиентами) приводит к этой ошибке подключения:
errorCode: 7, errorMessage: "AMQJS0007E Socket error:undefined."
Там особо нечего делать, поэтому мне интересно, успешно ли когда-либо подключался к MQTT Bridge через Javascript с помощью Eclipse Paho, клиентской реализации, предложенной Google в их документации.
Я прошел через их шаги по устранению неполадок, и, похоже, все идет вверх и вниз, так что здесь тоже нет никакой помощи.
https://cloud.google.com/iot/docs/troubleshooting
Я заметил, что в их документах есть образцы кода для Java / Python и т.д., но не для Javascript, поэтому мне интересно, просто ли он не поддерживается, и в их документации просто не упоминается как таковой.
Я упростил свой код, чтобы просто использовать пример Hello World в документации Paho, и, насколько я могу судить, я все сделал правильно (включая использование пути к моему устройству в качестве ClientID, токена JWT в качестве пароля, указав «неиспользуемое» поле userName и явно требуя MQTT v3.1.1).
А пока я возвращаюсь к опросу через их HTTP-мост, но у него есть очевидные задержки и недостатки сетевого трафика.
// Create a client instance
client = new Paho.MQTT.Client("mqtt.googleapis.com", Number(8883), "projects/[my-project-id]/locations/us-central1/registries/[my registry name]/devices/[my device id]");
// set callback handlers
client.onConnectionLost = onConnectionLost;
client.onMessageArrived = onMessageArrived;
// connect the client
client.connect({
mqttVersion: 4, // maps to MQTT V3.1.1, required by IOTCore
onSuccess:onConnect,
onFailure: onFailure,
userName: 'unused', // suggested by Google for this field
password: '[My Confirmed Working JWT Token]' // working JWT token
function onFailure(resp) {
console.log(resp);
}
// 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("World");
message = new Paho.MQTT.Message("Hello");
message.destinationName = "World";
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);
}