UNPKG

iwebpp.io

Version:

iWebPP name-client library for node.js

79 lines (64 loc) 2.36 kB
// Copyright (c) 2012 Tom Zhou<iwebpp@gmail.com> var SEP = require('../lib/sep'); var nmCln = require('../lib/iwebpp.io'); // iwebpp-ws library var WebSocket = require('wspp'); var WebSocketServer = WebSocket.Server; // msgpack library var msgpack = require('msgpack-js'); // vURL var vURL = require('../lib/vurl'); // create websocket server with name-client var creatNmclnWss = function(self) { var wss; wss = new WebSocketServer({httpp: true, server: self.bsrv.srv, path: SEP.SEP_CTRLPATH_BS}); wss.on('connection', function(client){ console.log('new ws connection: ' + client._socket.remoteAddress+':'+client._socket.remotePort+' -> ' + client._socket.address().address+':'+client._socket.address().port); client.on('message', function(message, flags) { // flags.binary will be set if a binary message is received // flags.masked will be set if the message was masked var data = (flags.binary) ? msgpack.decode(message) : JSON.parse(message); console.log('business message:'+JSON.stringify(data)); data += 'reply by A'; try { client.send(msgpack.encode(data), {binary: true, mask: true}, function(err){ if (err) { console.log(err+',sendOpcMsg failed'); } }); } catch (e) { console.log(e+',sendOpcMsg failed immediately'); } }); }); }; // clients A var nmclnsA = new nmCln({ srvinfo: { timeout: 20, endpoints: [{ip: '51dese.com', port: 51686}, {ip: '51dese.com', port: 51868}], turn: [ {ip: '51dese.com', agent: 51866, proxy: 51688} // every turn-server include proxy and agent port ] }, usrinfo: {domain: '51dese.com', usrkey: 'A'}, conmode: SEP.SEP_MODE_CS, vmode: vURL.URL_MODE_PATH }); nmclnsA.on('ready', function(){ console.log('name-nmclnsA ready'); // create websocket server creatNmclnWss(this); // fake web service nmclnsA.bsrv.srv.on('request', function(req, res){ res.end('Hello, this is A'); }); }); nmclnsA.on('error', function (err) { console.log('name client A error: ' + err); }); process.on('uncaughtException', function (e) { console.log('name client exception: ' + e); });