node-upnp-client

A pure Javascript upnp client

Usage no npm install needed!

<script type="module">
  import nodeUpnpClient from 'https://cdn.skypack.dev/node-upnp-client';
</script>

README

DESCRIPTION:

Get a list of the upnp devices on your local network thru nodejs and return networkServices like objects

I developped it to work with https://github.com/richtr/plug.play.js

Exemple:


var upnpClient = require('node-upnp-client');
var cli = new upnpClient();

//start search

cli.searchDevices();

// listen for search terminated

cli.on('searchDevicesEnd', function() {
    console.log('Servers'+ JSON.stringify(cli._servers))
});

// listen for added / removed devices

cli.on('updateUpnpDevice', function() {
    console.log('Servers'+ JSON.stringify(cli._servers))
});

you can now access, servers/renderers/connectionManagers and avTransports lists with :

cli._avTransports,
cli._renderers,
cli._connectionManagers,
cli._servers

Exemple of cli object after search with a server and renderer:

upnpClient {domain: null, _events: Object, _maxListeners: 10, _client: Socket, _ssdp: SSDP…}
_avTransports: Array[2]
_client: Socket
_connectionManagers: Array[5]
_events: Object
_maxListeners: 10
_renderers: Array[2]
0: Object
_index: 0
baseUrl: "http://192.168.0.21:54243"
friendlyName: "salon"
icon: "http://192.168.0.21:54243/icons/sm.png"
id: "uuid:79773cf6-fbac-3fab-b616-337183de8cdc:urn:schemas-upnp-org:service:RenderingControl:1urn:upnp-org:serviceId:RenderingControl"
modelName: "Freebox"
name: "urn:upnp-org:serviceId:RenderingControl"
online: true
onserviceoffline: false
onserviceonline: false
type: "upnp:urn:schemas-upnp-org:service:RenderingControl:1"
udn: "uuid:79773cf6-fbac-3fab-b616-337183de8cdc"
url: "http://192.168.0.21:54243/service/RenderingControl/control"
__proto__: Object
1: Object
length: 2
__proto__: Array[0]
_servers: Array[3]
0: Object
_index: 0
baseUrl: "http://192.168.0.36:10293"
friendlyName: "Ht5streamer_smo-ubu"
icon: "http://192.168.0.36:10293/icons/icon_32.png"
id: "uuid:50252187-dd92-4267-8a19-502c576a4eca:urn:schemas-upnp-org:service:ContentDirectory:1urn:upnp-org:serviceId:ContentDirectory"
modelName: "Windows Media Connect compatible (Node upnpserver)"
name: "urn:upnp-org:serviceId:ContentDirectory"
online: true
onserviceoffline: false
onserviceonline: false
type: "upnp:urn:schemas-upnp-org:service:ContentDirectory:1"
udn: "uuid:50252187-dd92-4267-8a19-502c576a4eca"
url: "http://192.168.0.36:10293/cds/control"
__proto__: Object
1: Object
2: Object
length: 3
__proto__: Array[0]
_ssdp: SSDP
_udnList: Array[5]
domain: null
__proto__: upnpClient