基于ZMQ的事件以及RPC调用
____ _____ _
| _ \ | ____| __ __ ___ _ __ | |_
| |_) | | _| \ \ / / / _ \ | '_ \ | __|
| _ < | |___ \ V / | __/ | | | | | |_
|_| \_\ |_____| \_/ \___| |_| |_| \__|
Based On ZMQ
Easy for event notify cross process and host.
===============================================================================================================
如何使用REvent进行事件监听
var REvent = require('remote_event');
//在本机创建REvent对象,标识为flyfish-test, 使用端口15000和150001
var $E = new REvent('flyfish-test', '127.0.0.1', 15000, 15001);
//启动REvent的服务器
$E.startServer();
//监听事件 "SayHello"
$E.addObserver('SayHello', function(param){
console.log('[2]on event SayHello: ', param.toString());
});
setInterval(function(){
//触发事件 "SayHello"
$E.notifyObservers('SayHello', "AISHEN");
}, 100);
如何使用REvent进行rpc调用
var REvent = require('remote_event');
//在本机创建REvent对象,标识为flyfish-rpc, 使用端口14000和140001
var $E = new REvent('flyfish-rpc', '127.0.0.1', 14000, 14001);
//启动REvent服务器
$E.startServer();
//注册一个RPC调用
$E.registerRpc("flyfish.user.rpc.test", function(rpcParam, callback){
var msg = '[' + (new Date()) + '] reply: ' + "flyfish.user.rpc.test, " + JSON.stringify(rpcParam);
callback(msg);
});
setInterval(function(){
/* rpc调用格式: function(rpcRoute, param, callback)
* callback = function(error, data){}
* 其中:error 表示rpc调用遇到的error
* data 表示rpc服务返回的数据, 字符串格式
*/
$E.rpc('flyfish.user.rpc.test', {name: "REvent"}, function(err, data){
if(err){
console.log('rpc call error: ', err);
}else{
console.log("rpc call get : ",data);
}
})
}, 500);
- 详细实例在test中
ZMQ
安装ZMQ运行库 http://zeromq.org/intro:get-the-software 下载[例如版本3.2.3]
make && make install