У меня есть подкаст на основе paho, работающий на малине pi, который слушает брокера cloudmqtt с именем пользователя и паролем. Я пересылаю сообщение в гнездо bluetooth.приложение cordova mqtt, не работающее на нескольких мобильных телефонах
Используя приложение cordova, я публикую сообщения «0» или «1». Он работает нормально. Но проблема возникает, когда я использую одно и то же приложение на другом мобильном устройстве, но работает только последнее открытое приложение.
Упрощение вещей .. сохранение в стороне вещи Bluetooth.
Сценарий идет как это, я имею в брокера MQTT на cloudmqtt:
URL: m12.cloudmqtt.com порт: 11395 имя пользователя: пользователь пароль: пароль
Когда я бегу mosquitto_sub клиент на Raspberry Pi с этой командой:
mosquitto_sub -h m12.cloudmqtt.com -p 11395 -u пользователя -P пройти -t образец/тест
Это сделать бег, а затем я бегу два mosquitto_pub в двух различных termianls с той же командой, как показано ниже:
mosquitto_pub -h m12.cloudmqtt.com -p 11395 -u пользователь -P передать -t образец/test -m "Hi"
Работает как очарование!
Но теперь, когда я использую эти учетные данные MQTT из Cordova приложения, используя Pāho MQTT плагин, на код ниже:
index.js
var connect = false;
var app = {
// Application Constructor
initialize: function() {
this.bindEvents();
},
// Bind Event Listeners
//
// Bind any events that are required on startup. Common events are:
// 'load', 'deviceready', 'offline', and 'online'.
bindEvents: function() {
document.addEventListener('deviceready', this.onDeviceReady, false);
onButton.addEventListener('touchend', app.sendOnSignal, false);
offButton.addEventListener('touchend', app.sendOffSignal, false);
},
// deviceready Event Handler
//
// The scope of 'this' is the event. In order to call the 'receivedEvent'
// function, we must explicitly call 'app.receivedEvent(...);'
onDeviceReady: function() {
//alert("ondeviceready called");
app.connectFreeBroker();
},
// Update DOM on a Received Event
connectFreeBroker:function (id,s) {
//alert("connectFreeBroker called");
cordova.plugins.CordovaMqTTPlugin.connect({
url:"tcp://m12.cloudmqtt.com", //a public broker used for testing purposes only. Try using a self hosted broker for production.
port:11395,
connectionTimeout:3000,
keepAlive:6000,
isCleanSession:true,
clientid:"client-2",
username:"user",
password:"pass",
success:function(s){
//alert("connect success callback");
},
error:function(e){
//alert("connect error callback");
},
onConnectionLost:function(){
console.log("disconnect");
}
})
},
sendOnSignal:function (id,s) {
//alert("sendOnSignal called");
cordova.plugins.CordovaMqTTPlugin.publish({
topic:"sample/test",
payload:"1",
success:function(s){
//alert("send success callback");
document.getElementById("bulb_image").src = "images/bulb-glow.png";
},
error:function(e){
//alert("send error callback");
}
})
},
sendOffSignal:function (id,s) {
//alert("sendOffSignal called");
cordova.plugins.CordovaMqTTPlugin.publish({
topic:"sample/test",
payload:"0",
success:function(s){
//alert("send success callback");
document.getElementById("bulb_image").src = "images/bulb-unglow.png";
},
error:function(e){
//alert("send error callback");
}
})
}
};
app.initialize();
// код заканчивается
На развертывании этого приложение на первом Android-телефоне (Galaxy S5) работает, а подпрограмма на малине pi получает сообщение. Теперь при развертывании одного и того же приложения с другим идентификатором клиента на втором телефоне Android (HTC desire 820) он работает так же, как и одно приложение одновременно на двух телефонах, и отправка сообщения не будет работать. Только сообщение с телефона, на котором было открыто приложение, отправит сообщение.
Я пробовал использовать разные брокеры, но такую же проблему. Я попытался использовать приложение на 4 телефонах Android по-прежнему не повезло. Может быть, небольшая ошибка, которую я делаю, но решит для меня большую проблему, любую помощь оценили! :-)
Вы собираетесь должны предоставить гораздо больше информации, прежде чем любой может помочь. например Какой тип телефона не работает? Какая ОС работает на телефонах? Какая же релевантность - малиновый Pi/Bluetooth, он не связан с проблемой с Кордовой? – hardillb
Что значит «последнее открытое приложение»? Дайте все подробности. Представьте, что я ничего не знаю о вашей проблеме и о том, что вы уже пробовали. – barny
Это похоже на поведение на bluemix, где при подключении нескольких устройств с использованием одного и того же ID, когда новое устройство регистрируется на предыдущем устройстве с этим идентификатором, отключено. Подписывается ли ваше приложение на использование идентификатора? Использует ли каждый мобильный код другой идентификатор? – barny