Я хочу перенаправить порт 1: 65535 на порт 10000 в Ubuntu, используя
sudo iptables -t nat -A PREPROUTING -i ens33 -p tcp --dport 1:65535 -j REDIRECT --to-port 10000
Клиент может подключиться к посреднику, но не может связаться с посредником.
Например,
в обычной ситуации, брокер отобразит
клиент подключен mqttjs_9026261a
mqttjs_9026261a подписанный пульс
mqttjs_9026261a подписанные данные
После ввода команды брокер отобразит
клиент, подключенный mqttjs_9026261a
Это серверный скрипт.
var mosca = require('mosca');
var settings = {
port: 1883,
};
var server = new mosca.Server(settings);
server.on('clientConnected', function (client) {
console.log('client connected', client.id);
});
server.on('published', function (packet, client) {
if (packet.topic == 'heart rate') {
console.log(client.id, 'published', packet.topic, packet.payload.toString('utf-8'));
}else if (packet.topic == 'data'){
console.log(client.id, 'published', packet.topic, packet.payload.toString('utf-8'));
}
});
server.on('subscribed', function (topic, client) {
console.log(client.id, 'subscribed', topic);
});
server.on('ready', setup);
server.on('clientDisconnected', function (client) {
console.log('Client Disconnected:', client.id);
});
function setup() {
console.log('server is running at port 1883');
}
Это клиентский скрипт.
var random = require('random');
var mqtt = require('mqtt')
var client = mqtt.connect('mqtt://broker ip address')
var setintv = null;
process.stdin.resume();
process.stdin.setEncoding('utf8');
client.on('connect', function () {
console.log('connected to mqtt server');
client.subscribe('heart rate');
client.subscribe('data');
});
process.stdin.on('data', function (message) {
if (message.trim() == '1') {
if (setintv == null) {
setintv = setInterval(function () {
message = random.int(60, 100);
console.log(message.toString());
client.publish('heart rate', message.toString())
}, 1000);
} else if (setintv != null) {
clearInterval(setintv);
setintv = null;
}
} else if (message.trim() == '2') {
console.log('disconnect to mqtt server');
client.end();
}
else {
message = message.trim();
client.publish('data', message.toString())
}
});