Я занимаюсь программированием 2 месяца и хочу создать мобильное приложение, которое будет взаимодействовать с сервером на P C в той же локальной сети. Я использую модуль NodeJS Dgram и Socket.io. Я транслирую сообщения на сервере, и я хочу видеть эти сообщения на своем мобильном устройстве, чтобы, когда я запускаю приложение на устройстве, я буду прослушивать сообщения, а затем устанавливать соединение через сокет с адресом, на который было отправлено сообщение. из. Я видел пару примеров / решений в сети, но я все еще не понимаю, и это меня еще больше сбивает с толку. В настоящее время он работает хорошо, потому что я транслирую с одного P C, а с другого P C. Я запускаю клиент узла. js, а затем прослушиваю эти сообщения, но я хотел бы сделать то же самое, только на мобильном устройстве (Кордова платформа).
Цель состоит в том, чтобы я щелкнул кнопку и начал прослушивать широковещательные сообщения, если это вообще возможно.
Код для широковещательной передачи - на сервере:
const dgram = require('dgram');
const broadcasts = this.getBroadcastAddresses();
_broadcasting = setInterval(
function (broadcasts, dgram, options) {
broadcasts.forEach(function (broadcast) {
const message = Buffer.from(options.data);
console.log(message);
const client = dgram.createSocket({ type: 'udp4', reuseAddr: true });
client.bind(8080, function () {
client.setBroadcast(true);
client.send(message, 0, message.length, 8080, broadcast, function (err, bytes) {
if (err) {
console.error(err);
}
client.close();
if (options.hasOwnProperty('callback')) {
options.callback(broadcast, err, bytes);
}
return;
});
});
});
},
options.timer * 1000,
broadcasts,
dgram,
options
);
Код для клиента для прослушивания сообщений:
if (util.platform === 'webkit') {
var dgram = require('dgram');
_socket = socket = dgram.createSocket({ type: 'udp4', reuseAddr: true });
_socket.on('message', function (message, rinfo) {
console.log('Message: ' + rinfo.address + ':' + rinfo.port + ' - ' + message);
});
_socket.on('listening', () => {
options.bind_callback(socket.address());
});
_socket.bind(8080, '0.0.0.0');
} else if (util.platform === 'cordova') {
_socket = window.dgram.createSocket('udp4', 8080);
_socket.on('message', (msg, remote) => {
options.message_callback(msg.toString(), remote);
});
_socket.on('listening', () => {
options.bind_callback(socket.address());
});
_socket.bind();
}