UNPKG

ndn-js-contrib

Version:

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

1 lines 1.81 kB
var ElementReader=require("ndn-js/js/encoding/element-reader.js").ElementReader,Transport=require("ndn-js/js/transport/transport.js").Transport,wes=require("ws"),wss=wes.Server,debug={};debug.debug=require("debug")("WebSocketServerTransport");var WebSocketServerTransport=function(a){return Transport.call(this),"string"==typeof a?(2===a.split(":").length&&(a+=":8585"),this.ws=new wes(a)):this.ws=a,this};WebSocketServerTransport.prototype=new Transport,WebSocketServerTransport.prototype.name="WebSocketServerTransport",WebSocketServerTransport.ConnectionInfo=function(a){Transport.ConnectionInfo.call(this),this.socket=a},WebSocketServerTransport.ConnectionInfo.prototype=new Transport.ConnectionInfo,WebSocketServerTransport.ConnectionInfo.prototype.name="WebSocketServerTransport.ConnectionInfo",WebSocketServerTransport.ConnectionInfo.prototype.getSocket=function(){return this.socket},WebSocketServerTransport.defineListener=function(a,b){var c=this;b=b||8585,this.Listener=function(a){c.server=new wss({port:b}),c.server.on("connection",function(b){a.newFace("WebSocketServerTransport",b)})}},WebSocketServerTransport.prototype.connect=function(a,b,c,d){this.elementReader=new ElementReader(b);var e=this;b.readyStatus=2,this.ws.on("message",function(a){if("object"==typeof a){var b=new Buffer(a);try{e.elementReader.onReceivedData(b)}catch(c){return}}}),this.ws.on("error",function(){}),this.ws.on("close",function(){e.ws=null,b.closeByTransport(),d()}),this.onClose=d||function(){},this.connectedHost=111,this.connectedPort=111,c()},WebSocketServerTransport.prototype.send=function(a){try{this.ws.send(a,{binary:!0})}catch(b){}},WebSocketServerTransport.prototype.close=function(){try{this.ws.end()}catch(a){}this.onClose(),console.log("WS connection closed.")},module.exports=WebSocketServerTransport;