nodejs thrift多路复用客户端

2018年2月8日 · 103 字 · 1 分钟

官网nodejs示例中只实现了服务端是单一service的情形,而对于服务端属于多个服务复用一个连接地址的例子却未实现。

查看thrift的nodejs库源码发现实际上还是支持的。以下来展示调用单一服务和多个服务的区别。

单一服务

var thrift = require('thrift');
var Calculator = require('./gen-nodejs/Calculator');
var ttypes = require('./gen-nodejs/tutorial_types');
const assert = require('assert');

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

var connection = thrift.createConnection("localhost", 9090, {
  transport : transport,
  protocol : protocol
});
var client = thrift.createClient(Calculator, connection);
// 已经可以调用client方法

复用服务

var thrift = require('thrift');
var Calculator = require('./gen-nodejs/Calculator');
var ttypes = require('./gen-nodejs/tutorial_types');
const assert = require('assert');

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

var connection = thrift.createConnection("localhost", 9090, {
  transport : transport,
  protocol : protocol
});
const m = new thrift.Multiplexer(); // 关键
const client = m.createClient('calculator', Calculator, connection); // calculator为服务端声明的服务名称
// 已经可以调用client方法

经过测试,以上代码能与golang实现的服务端正常通信。