2015-03-24 4 views
3

Я ищу, чтобы получить обнаружение устройства UPnP, описание сделано в Javascript - либо в автономной среде браузера, либо в NodeJS . К этому я попытался сделать два решения, но оба не работали для меня. Подробности -Обнаружение UPnP, описание внутри Javascript

1] NodeJS основы: https://www.npmjs.com/package/upnp-client После коррекции несколько опечаток в примере приложения и запустить его в узел (My nodeJS работает под X-Ubuntu Virtual Machine внутри Virtualbox) я получаю ниже ошибки на управлении Пример приложения upnp-client

dgram.js: 399 throw new errnoException (process._errno, 'addMembership'); ^ Ошибка: addMembership EBADF на новых errnoException (dgram.js: 457: 11)

NodeJS Версия: v0.10.25 Upnp клиент апи: 0.0.1

2] Под Browser (Chrome/IE) https://www.npmjs.com/package/upnp-client не ни один из них в версии я поддержавшим API navigator.getNetworkServices, который, как представляется, необходимо для этой библиотеки

Как я могу получить обнаружение устройств UPnP работает в Javascri пт?

Любые другие решения или указатели для устранения вышеуказанных ошибок/обходных решений.

+0

[Chrome] (https://developer.chrome.com/apps/app_network) и [Firefox] (https://developer.mozilla.org/en-US/docs/Web/API/TCP_Socket_API) оба предоставляют API сокетов для расширений. Вы можете проверить, существует ли существующий клиент UPnP как расширение. – leesei

ответ

2

UPnP uses TCP/UDP packages for advertisement/discovery/etc. И так browsers cannot open network sockets, короткий ответ: Нет, мы не можем использовать UPnP в браузере в данный момент.

Единственный проблеск надежды - это Network Service Discovery, который все еще находится в стадии разработки в большинстве браузеров. В Chrome, например, вы можете включить его с помощью chrome://flags/#enable-experimental-web-platform-features, а затем смог бы сделать что-то вроде этого (от проекта 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

до сих пор не работает в хром. было бы здорово, если бы это было так. – lamarant

Смежные вопросы