48 lines
1.1 KiB
JavaScript
48 lines
1.1 KiB
JavaScript
'use strict';
|
|
|
|
var dgram = require('dgram')
|
|
, fs = require('fs')
|
|
, socket
|
|
, ssdpPort = 1900
|
|
, sourcePort = 61900
|
|
, ssdpAddress = '239.255.255.250'
|
|
, myIface = '192.168.1.4'
|
|
, mySt = 'urn:schemas-upnp-org:device:InternetGatewayDevice:1'
|
|
;
|
|
|
|
function broadcastSsdp() {
|
|
var query
|
|
;
|
|
|
|
query = new Buffer(
|
|
'M-SEARCH * HTTP/1.1\r\n'
|
|
+ 'HOST: ' + ssdpAddress + ':' + ssdpPort + '\r\n'
|
|
+ 'MAN: "ssdp:discover"\r\n'
|
|
+ 'MX: 1\r\n'
|
|
+ 'ST: ' + mySt + '\r\n'
|
|
+ '\r\n'
|
|
);
|
|
fs.writeFileSync('upnp-search.txt', query, null);
|
|
|
|
// Send query on each socket
|
|
socket.send(query, 0, query.length, ssdpPort, ssdpAddress);
|
|
}
|
|
|
|
// TODO test interface.family === 'IPv4'
|
|
socket = dgram.createSocket('udp4');
|
|
socket.on('listening', function () {
|
|
console.log('socket ready...');
|
|
console.log(myIface + ':' + ssdpPort);
|
|
|
|
broadcastSsdp();
|
|
});
|
|
socket.on('message', function (chunk, info) {
|
|
var message = chunk.toString();
|
|
console.log('[incoming] UDP message');
|
|
console.log(message);
|
|
console.log(info);
|
|
});
|
|
|
|
console.log('binding to', sourcePort);
|
|
socket.bind(sourcePort, myIface);
|