UNPKG

ndn-js-contrib

Version:

Reusable 'Classes' for Named Data Networking: NameTree, PIT, FIB, ContentStore, Interfaces, and Transports

80 lines (65 loc) 2.35 kB
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;