React native mqtt - 按下按钮时发布
React native mqtt - publish when button is pressed
我的项目使用 sp-react-native-mqtt,我想在按下按钮时向 mqtt 主题发布消息。
Mqtt连接代码,其中returns一个承诺:
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id'
}).then(function(client) {
client.on('closed', function() {
console.log('mqtt.event.closed');
});
client.on('error', function(msg) {
console.log('mqtt.event.error', msg);
});
client.on('message', function(msg) {
console.log('mqtt.event.message', msg);
});
client.on('connect', function() {
console.log('connected');
client.subscribe('/data', 0);
client.publish('/data', "test", 0, false);
});
client.connect();
}).catch(function(err){
console.log(err);
});
编辑:
如果我将客户端保存在一个变量中,并且我使用该变量进行发布,我会收到此错误:
let mqttClient = null;
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id',
})
.then(function (client) {
mqttClient = client;
.... }
<Button
title="test"
onPress={() => {
mqttClient.publish('/data', 'message');
}}
/>
我该如何处理?
或者,如果您对如何在本机反应中使用 mqtt 或 mqtt 的另一个包有任何其他建议。
谢谢!
毕竟,@hardillb 的回答帮助了我。
起初即使我将 客户端 保存在一个变量中它也没有发送消息,因为我在客户端连接之前就保存了它。
工作代码:
let mqttClient = null;
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id',
})
.then(function (client) {
client.on('closed', function () {
console.log('mqtt.event.closed');
});
client.on('error', function (msg) {
console.log('mqtt.event.error', msg);
});
client.on('message', function (msg) {
console.log('mqtt.event.message', msg);
});
client.on('connect', function () {
console.log('connected');
client.subscribe('data', 0);
mqttClient = client;
});
client.connect();
})
.catch(function (err) {
console.log(err);
});
<Button
title="test"
onPress={() => {
// console.log(mqttClient);
mqttClient.publish('data', 'This is the answer', 0, true);
}}
/>
谢谢@hardillb!
我的项目使用 sp-react-native-mqtt,我想在按下按钮时向 mqtt 主题发布消息。
Mqtt连接代码,其中returns一个承诺:
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id'
}).then(function(client) {
client.on('closed', function() {
console.log('mqtt.event.closed');
});
client.on('error', function(msg) {
console.log('mqtt.event.error', msg);
});
client.on('message', function(msg) {
console.log('mqtt.event.message', msg);
});
client.on('connect', function() {
console.log('connected');
client.subscribe('/data', 0);
client.publish('/data', "test", 0, false);
});
client.connect();
}).catch(function(err){
console.log(err);
});
编辑:
如果我将客户端保存在一个变量中,并且我使用该变量进行发布,我会收到此错误:
let mqttClient = null;
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id',
})
.then(function (client) {
mqttClient = client;
.... }
<Button
title="test"
onPress={() => {
mqttClient.publish('/data', 'message');
}}
/>
我该如何处理? 或者,如果您对如何在本机反应中使用 mqtt 或 mqtt 的另一个包有任何其他建议。
谢谢!
毕竟,@hardillb 的回答帮助了我。
起初即使我将 客户端 保存在一个变量中它也没有发送消息,因为我在客户端连接之前就保存了它。
工作代码:
let mqttClient = null;
MQTT.createClient({
uri: 'mqtt://test.mosquitto.org:1883',
clientId: 'your_client_id',
})
.then(function (client) {
client.on('closed', function () {
console.log('mqtt.event.closed');
});
client.on('error', function (msg) {
console.log('mqtt.event.error', msg);
});
client.on('message', function (msg) {
console.log('mqtt.event.message', msg);
});
client.on('connect', function () {
console.log('connected');
client.subscribe('data', 0);
mqttClient = client;
});
client.connect();
})
.catch(function (err) {
console.log(err);
});
<Button
title="test"
onPress={() => {
// console.log(mqttClient);
mqttClient.publish('data', 'This is the answer', 0, true);
}}
/>
谢谢@hardillb!