UNPKG

remote_event

Version:

Event System Based on ZMQ

74 lines (64 loc) 1.88 kB
/** * Created with JetBrains WebStorm. * User: aishen * Date: 13-9-22 * Time: 下午8:16 * To change this template use File | Settings | File Templates. * * 服务器代码模版 */ var zmq = require('zmq'); var envArgv = process.argv.slice(2); /** * 创建一个server实例 * @param id * @param host * @param listenPort * @param publishPort * @constructor */ var Server = function(id, host, listenPort, publishPort){ this.id = id; this.host = host; this.listenPort = listenPort; this.publishPort = publishPort; this.publishAddr = ["tcp://", host, ':', publishPort].join(''); this.listenAddr = ["tcp://", host, ':', listenPort].join(''); } /** * 启动服务器实例 */ Server.prototype.start = function(){ var self = this; this.publishSocket = zmq.socket('pub'); this.publishSocket.bind(this.publishAddr, function(err){ if(err){ throw err; } console.log('[ ' + self.id + ' ] ' + 'REvent Server start.'); }); this.listenSocket = zmq.socket('rep'); this.listenSocket.bind(this.listenAddr, function(err){ if(err){ throw err; } self.listenSocket.on('message', function(data){ self.listenSocket.send(''); console.log('Server on Message: ', data.toString()); var dataObj = JSON.parse(data.toString()); self.publishSocket.send(dataObj.event + " " + JSON.stringify(dataObj.param)); }); }); } console.log(envArgv); /** * 从运行参数中读取server的配置,id,host地址,监听端口,和事件发布端口 */ if(envArgv.length == 4){ var id = envArgv[0], host = envArgv[1], listenPort = envArgv[2], publishPort = envArgv[3]; var server = new Server(id, host, listenPort, publishPort); server.start(); }