pinguela

0.0.4 • Public • Published

Stories in Ready

pinguela

This library intends to provide an interface compatible with the W3C Network Service Discovery Working Draft 20 February 2014 that could be used with current and past browsers.

The idea is to leverage WebSockets and web proxying to bridge the network and protocol gaps and enable web applications to browse and control UPnP devices and services in a private network as suggested in this presentation.

Setup and usage

Server-side

var http = require('http');
var Pinguela = require('pinguela');
 
var server = http.createServer(function (req, res) {
    // request handler code
});
 
var pinguela = new Pinguela({
    server: server
});
 
server.listen(8000);

Using with a framework

hapi
var hapi = require('hapi');
var Pinguela = require('pinguela');
 
var server = new Hapi.Server(8000);
 
server.route({
    method: 'GET',
    path: '/',
    handler: function (request, reply) {
        // request handler code
    }
});
 
server.start(function () {
    var pinguela = new Pinguela({
        server: server.listener // pass the hapi server listener attribute
    });
});
express
var express = require('express');
var Pinguela = require('pinguela');
 
var server = express.createServer();
 
server.get('/', function (req, res) {
    // request handler code
});
 
var pinguela = new Pinguela({
    server: server
});
 
server.listen(8000);

Client-side

<script src="/pinguela/pinguela.js" type="application/javascript"></script>
 
<script type="application/javascript">
    window.onload = function () {
        var types = [
            'upnp:urn:schemas-upnp-org:service:AVTransport:1',
            'upnp:urn:schemas-upnp-org:service:ConnectionManager:1',
            'upnp:urn:schemas-upnp-org:service:ContentDirectory:1',
            'upnp:urn:schemas-upnp-org:service:RenderingControl:1'
        ];
 
        navigator.getNetworkServices(
 
                types,
 
                function (services) {
                    console.log('Found %d services', services.length);
 
                    for (var i = 0; i < services.length; i++) {
                        console.log(services[i].id);
                        console.log(services[i].name);
                        console.log(services[i].type);
                        console.log(services[i].url);
                    }
                },
 
                function (error) {
                    console.error(error);
                }
 
        );
    };
</script> 

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i pinguela

Weekly Downloads

1

Version

0.0.4

License

MIT

Last publish

Collaborators

  • rodfernandez