2015-03-24 3 views
3

Je cherche à obtenir la découverte de périphériques UPnP, description faite en Javascript - soit dans un environnement de navigateur autonome ou dans NodeJS Pour cela, j'ai essayé ci-dessous deux solutions, mais les deux ne fonctionnaient pas pour moi. Détails -découverte UPnP, description à l'intérieur de Javascript

1] NodeJS bases: https://www.npmjs.com/package/upnp-client Après correction de quelques fautes de frappe dans l'exemple d'application, et l'exécuter dans le nœud (Mes NodeJS est en cours d'exécution sous machine virtuelle X-Ubuntu dans VirtualBox) Je reçois ci-dessous erreurs sur l'exécution de la Exemple d'application upnp-client

dgram.js: 399 throw new errnoException (process._errno, 'addMembership'); ^ Erreur: addMembership EBADF de nouvelles errnoException (dgram.js: 457: 11)

Version NodeJS: v0.10.25 Upnp client api: 0.0.1

2] Sous le navigateur (Chrome/IE) https://www.npmjs.com/package/upnp-client Aucun d'entre eux dans les versions que je l'ai pris en charge l'API navigator.getNetworkServices qui semble être nécessaire pour cette bibliothèque

Comment puis-je obtenir la détection des périphériques UPnP travaillant dans Javascri pt?

Toutes les autres solutions ou pointeurs pour résoudre les erreurs ci-dessus/solutions de contournement appréciées.

+0

[Chrome] (https://developer.chrome.com/apps/app_network) et [Firefox] (https://developer.mozilla.org/en-US/docs/Web/API/TCP_Socket_API) fournissent tous deux une API de socket pour les extensions. Vous pouvez vérifier s'il existe un client UPnP implémenté en tant qu'extension. – leesei

Répondre

2

UPnP uses TCP/UDP packages for advertisement/discovery/etc. Et depuis browsers cannot open network sockets, la réponse est: Non Nous ne pouvons pas utiliser UPnP dans un navigateur au moment.

La seule lueur d'espoir est le Network Service Discovery, qui est encore en phase de développement dans la plupart des navigateurs. Dans Chrome par exemple, vous pouvez activer l'aide chrome://flags/#enable-experimental-web-platform-features, et serait en mesure de faire quelque chose comme ça (du projet W3C):

function showServices(services) { 
    // Show a list of all the services provided to the web page 
    for(var i = 0, l = services.length; i < l; i++) console.log(services[i].name); 
} 

navigator.getNetworkServices('zeroconf:_boxee-jsonrpc._tcp').then(showServices); 
+0

ne fonctionne toujours pas en chrome. ce serait génial si c'était le cas. – lamarant