mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
58 lines
2.0 KiB
JavaScript
58 lines
2.0 KiB
JavaScript
|
/*global define */
|
||
|
define(['lib/stapes'], function (Stapes) {
|
||
|
'use strict';
|
||
|
return Stapes.subclass(/** @lends Network.prototype */{
|
||
|
detectTimerId: null,
|
||
|
|
||
|
/**
|
||
|
* @class Network
|
||
|
* @classdesc Empty network functions handler
|
||
|
* @constructs
|
||
|
*/
|
||
|
constructor: function () {
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Returns the list of known local interfaces (ipv4)
|
||
|
* @param {function(string[])} [onSuccess] - Callback to call on success
|
||
|
* @param {function(error:string)} [onError] - Callback to call on error
|
||
|
*/
|
||
|
getLocalInterfaces: function (onSuccess, onError) {
|
||
|
var ips = [], RTCPeerConnection;
|
||
|
|
||
|
// https://developer.mozilla.org/de/docs/Web/API/RTCPeerConnection
|
||
|
RTCPeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
|
||
|
|
||
|
var rtc = new RTCPeerConnection({iceServers: []});
|
||
|
rtc.onicecandidate = function (event) {
|
||
|
var parts;
|
||
|
|
||
|
if (this.detectTimerId) {
|
||
|
clearTimeout(this.detectTimerId);
|
||
|
}
|
||
|
|
||
|
if (event.candidate) {
|
||
|
parts = event.candidate.candidate.split(' ');
|
||
|
if (ips.indexOf(parts[4]) === -1) {
|
||
|
console.log(event.candidate);
|
||
|
ips.push(parts[4]);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
this.detectTimerId = setTimeout(function () {
|
||
|
if (onSuccess) {
|
||
|
onSuccess(ips);
|
||
|
}
|
||
|
}, 200);
|
||
|
}.bind(this);
|
||
|
|
||
|
rtc.createDataChannel('');
|
||
|
rtc.createOffer(rtc.setLocalDescription.bind(rtc), onError);
|
||
|
},
|
||
|
|
||
|
canDetectLocalAddress: function () {
|
||
|
return window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection || window.msRTCPeerConnection;
|
||
|
}
|
||
|
}, true);
|
||
|
});
|