基于 node.js 多服务 Thrift

3,225 阅读1分钟

基于Nodejs 下的thrift 应用 ,测试与java 能进行互相调用

版本号 0.10.0

客户端



var thrift = require('thrift');
var IThriftInfoTestService = require("./gen-nodejs/IThriftInfoTestService.js");
var IThriftInfoTestService_Types = require('./gen-nodejs/IThriftInfoTestService_Types');

var IThriftTestService = require("./gen-nodejs/IThriftTestService.js");
var IThriftTestService_Types = require("./gen-nodejs/IThriftTestService_Types");

var transport = thrift.TFramedTransport;
var protocol = thrift.TBinaryProtocol;

var connection = thrift.createConnection("localhost", 29999, {
  transport : transport,
  protocol : protocol
});

connection.on('error', function(err) {
  assert(false, err);
});

// Create a Calculator client with the connection
// var client = thrift.createClient(IThriftInfoTestService, connection);

// 多方法 multiplexed_protocol 的调用
var multiplexer =new thrift.Multiplexer();

var map ={};
map.name = '我是庄杰森';
map.content = '我是node js!!!';


//服务一方法一调用
var thriftInfoTestServiceClient = multiplexer.createClient('com.java.core.rpc.thrift.service.IThriftInfoTestService',IThriftInfoTestService,connection);

thriftInfoTestServiceClient.showInfoData("我是从 nodejs 过来的! showInfoData()方法! 。。",true, map, function(err, response) {
  console.log("showInfoData : " + response);
});

var map2 ={};
map2.name = '我是庄杰森';
map2.content = '我是node js!!!showThriftResult() 方法!!。';


//服务二方法二调用
var thriftTestService = multiplexer.createClient('com.java.core.rpc.thrift.service.IThriftTestService',IThriftTestService,connection);

thriftTestService.showThriftResult("我是从 nodejs 过来的! showThriftResult() 方法 !。。。。",true, map2, function(err, response) {
  console.log("showThriftResult : " + response);
  
  
  //关闭连接
  connection.end();
});




服务端





var thrift = require("thrift");
var IThriftInfoTestService = require("./gen-nodejs/IThriftInfoTestService.js");
var IThriftInfoTestService_Types = require('./gen-nodejs/IThriftInfoTestService_Types');

var IThriftTestService = require("./gen-nodejs/IThriftTestService.js");
var	IThriftTestService_Types = require("./gen-nodejs/IThriftTestService_Types");

var data = {};

//实现方法
var thriftInfoTestService = new IThriftInfoTestService.Processor({
	'showInfoData' : function(name, b2, m2, callback){


		console.log('showInfoData....');


		callback(null,"i am node thriftInfoTestService !!! ");
	}
});

//实现方法
var thriftTestService = new IThriftTestService.Processor({
	'showThriftResult' : function(name, b2, m2, callback){

		console.log('showThriftResult....');



		callback(null,"i am node thriftTestService !!! ");
	}
});

//多服务注册
var processor  = new thrift.MultiplexedProcessor();
processor.registerProcessor('com.java.core.rpc.thrift.service.IThriftTestService',thriftTestService);
processor.registerProcessor('com.java.core.rpc.thrift.service.IThriftInfoTestService',thriftInfoTestService);


// var framedTransport = new thrift.TFramedTransport();
//TFramedTransport 一定要这个避免报错
var transport = thrift.TFramedTransport;
var protocol = thrift.TBinaryProtocol;

var options = {
  transport : transport,
  protocol : protocol
};

var server = thrift.createMultiplexServer(processor,options);


server.listen(29999);

console.log('start listening....');