ndn-js-contrib
Version:
Reusable 'Classes' for Named Data Networking: NameTree, PIT, FIB, ContentStore, Interfaces, and Transports
83 lines (72 loc) • 2.68 kB
JavaScript
var WebSocket = require("ws");
var PeerServer = require("peer").PeerServer;
var Face = require("../Face.js")
var Interest = require("ndn-js/js/interest.js").Interest;
var Name = require("ndn-js/js/name.js").Name;
var WebSocketServerTransport = require("./WebSocketServerTransport");
function Node_listen (params){
var self = this;
if(params.protocol === "websocket"){
if (!params.port)
params.port = (params.http || params.https) ? undefined : 8686;
var wsServer = new WebSocket.Server({
port : params.port
, server : params.https || params.http
, path : params.path
});
console.log(wsServer, params.port)
wsServer.on("connection", function onClientWebsocket(socket){
var face;
console.log("here")
Face.Create(new WebSocketServerTransport(socket), function ws_client_Face_onReceivedElement(element){
console.log("element")
self.onReceivedElement(element, face);
})
.then(function onClientFace(newface){
face = newface;
self.onFace(face);
});
});
this._servers.push(wsServer);
} else if (params.protocol === "webrtc"){
console.log("her")
params.port = params.port || 8787;
params.path = params.path ||"/"
var peerServer = new PeerServer({
port : params.port
, path : params.path
, ssl : params.ssl
});
this._servers.push(peerServer);
console.log("!!!!!!!",peerServer);
peerServer.on("connection", function(id){
var connectionAnnouncement = new Interest(new Name("localhop/nfd/peer/connect"));
console.log("peer connection", id)
connectionAnnouncement.getName().append(""+params.port + "#" + id);
connectionAnnouncement.setInterestLifetimeMilliseconds(100)
console.log("connectionAnnouncement", connectionAnnouncement.name.toUri())
self.expressInterest(connectionAnnouncement)
.then(function(){
console.log("got data")
})
.catch(function(er){
console.log("timeout")
});
})
peerServer.on("disconnect", function(id){
var disconnectAnnouncement = new Interest(new Name("localhop/nfd/peer/diconnect"))
console.log("peer disconnection", id)
disconnectAnnouncement.getName().append("" +params.port + "#" + id);
self.expressInterest(disconnectAnnouncement)
.then(function(){
console.log("got data")
})
.catch(function(er){
console.log("timeout")
});
})
} else if (params.protocol === "tcp"){
} else if (params.protocol === "udp"){
}
}
module.exports = Node_listen;