I am very much still learning this stuff
Multicast UPP4 Sender Example #1
Works on Windows
//==================================================================
// Multicast Sender
//
// Based on: gist.github.com/ciaranj/9056285
// node.js doc: nodejs.org/api/dgram.html
//==================================================================
var ADDR = "224.1.1.1" // udp4 multicast address
var news = [
"Borussia Dortmund wins German championship",
"Tornado warning for the Bay Area",
"More rain for the weekend",
"Android tablets take over the world",
"iPad2 sold out",
"Nation's rappers down to last two samples"
];
// load "dgram" module
const dgram = require("dgram");
// create socket
console.log("create socket");
var sender = dgram.createSocket("udp4");
console.log("bind");
sender.bind(function() {
console.log(" set broadcast true" );
sender.setBroadcast(true);
console.log(" set multicast TTL");
sender.setMulticastTTL(0);
console.log(" set broadcast interval");
setInterval(broadcastNew,3000);
});
console.log("event loop");
// multicast random string from news array
function broadcastNew() {
var message = new Buffer(news[Math.floor(Math.random()*news.length)]);
sender.send(message,0,message.length,5007,ADDR);
console.log("Sent " + message + " to the wire...");
}
Multicast UPP4 receiver Example #1
Works on Windows
//==================================================================
// Multicast Receiver
//
//------------------------------------------------------------------
// Notes:
// 1. The message event is fired, when a UDP packet arrives destined
// for this server.
// 2. The listening event is fired, when the server has initialized
// and all ready to receive UDP packets.
//------------------------------------------------------------------
//
// Base on: gist.github.com/ciaranj/9056285
// node.js doc: nodejs.org/api/dgram.html
//==================================================================
var PORT = 5007; // udp socket port number
var ADDR = "224.1.1.1" // udp4 multicast address
// load "dgram" module
const dgram = require("dgram");
// create socket
//------------------------------------------------------------------
// var receiver = dgram.createSocket("udp4"); <- no reuse of address
//------------------------------------------------------------------
console.log("create socket");
var receiver = dgram.createSocket({ type: "udp4", reuseAddr: true });
// attach a callback to "error" events
console.log("create socket error event callback");
receiver.on("error", (err) => {
console.log("server error:\n${err.stack}");
//receiver.close();
});
// add a listener for "message" events
console.log("create listener");
receiver.on("listening", function () {
var address = receiver.address();
console.log("UDP receiver listening on " + address.address + ":" + address.port);
console.log(" set broadcast true");
receiver.setBroadcast(true);
console.log(" set multicast TTL");
receiver.setMulticastTTL(0);
console.log(" add receiver to multicast address");
receiver.addMembership(ADDR);
});
// attach a callback to a "message" events
console.log("create message event callback");
receiver.on("message", function (message, remote) {
console.log("A: Epic Command Received. Preparing Relay.");
console.log("B: From: " + remote.address + ":" + remote.port +" - " + message);
});
// bind socket to port - begin listening for datagram messages
console.log("bind");
receiver.bind(PORT);
console.log("event loop");