Node.js thrift小试

今天用Node.js写了一个thrift的小demo,有点小坑

1、nodejs_msg.thrift 接口描述文件
struct SendMsg {
1: string content,
}

struct ResMsg {
1: i32 result = 1,
2: i32 id,
}

service Message{
ResMsg send(1:SendMsg data),
}

2、我们写client.js
var thrift = require(‘thrift’);
var transport = thrift.TBufferedTransport();
var protocol = thrift.TBinaryProtocol();

var Message = require(‘./gen-nodejs/Message.js’);
var ttypes = require(‘./gen-nodejs/nodejs_msg_types.js’);

var connection = thrift.createConnection(“localhost”, 9090, {
transport : transport,
protocol : protocol
});

connection.on(‘error’, function(err) {
console.log(err)
});

var client = thrift.createClient(Message, connection);

var sendData = new ttypes.SendMsg()
sendData.content = ‘hello world’
client.send(sendData, function(err, response) {
if(err){
return console.log(err)
}
console.log(response.result)
console.log(response.id)
});

3、最后是server.js
var thrift = require(“thrift”);
var Message = require(‘./gen-nodejs/Message.js’);
var ttypes = require(‘./gen-nodejs/nodejs_msg_types.js’);

var count = 1
var server = thrift.createServer(Message, {

send:function(data, cb){
console.log(data)
var resData = new ttypes.ResMsg();
resData.result = 1;
resData.id = count++;
cb(null, resData)
}
}, {});

server.listen(9090);

4、执行命令:
thrift -r –gen js:node nodejs_msg.thrift
node server.js
node client.js
在server端:
[root@srv031020 nodejs]# node server.js
{ content: ‘hello world’ }
在client端:
[root@srv031020 nodejs]# node client.js
1
1