ndn-js-contrib
Version:
Reusable 'Classes' for Named Data Networking: NameTree, PIT, FIB, ContentStore, Interfaces, and Transports
80 lines (65 loc) • 2.35 kB
JavaScript
var Peer = require("peerjs")
, Face = require("../Face.js")
, DataConnectionTransport = require("./DataConnectionTransport.js");
window.Peer = Peer;
function Node_peer_listen (params){
var self = this;
return new Promise(function Node_listen_Promise(resolve, reject){
if(params.protocol === "webrtc"){
var options = {
host : params.host || location.hostname
, port : params.port || 8787
, path : params.path || "/"
, config : params.config
}
var peer = new Peer(params.id,options);
peer.on('connection', function onClientPeerConnection(dataConnection){
var face;
console.log("incoming peerconnection")
Face.Create(new DataConnectionTransport({
dataConnection : dataConnection
, peer : peer
}), function ClientPeerConnectionFace_onReceivedElement(element){
self.onReceivedElement(element, face);
})
.then(function onClientFace(fac){
face = fac;
self.onFace(fac)
.then(function(){
self.onPeer(face, dataConnection.metadata);
});
});
});
self._servers.push(peer);
peer.on('open', function onPeerServerConnected(id){
console.log("peer Open")
resolve(id)
})
} else if (params.protocol === "websocket" && window.WebSocketServer){
params.port = params.port || 8686;
params.host = params.host || "0.0.0.0";
var wsServer = new WebSocketServer({
port: params.port || 8686
, host : params.host || "0.0.0.0"
});
wsServer.addEventListener('request', function(req) {
var socket = req.accept();
Face.create(new ws_Transport(socket), function ws_client_Face_onReceivedElement(element){
self.onReceivedElement(element, face);
})
.then(function onClientFace(face){
self.onFace(face)
.then(function(){
self.onPeer(face);
});
});
});
self.servers._push(wsServer)
resolve(params.host + ":" + params.port)
} else {
reject(new Error("Unsupported Options"))
}
})
}
window.listen = Node_peer_listen;
module.exports = Node_peer_listen;