forked from coolaj86/walnut.js
		
	
		
			
	
	
		
			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); |