拥抱大家庭,nodejs走thrift

拥抱大家庭,nodejs走thrift。最贱的例子,nodejs与nodejs之间走thrift对传。

 

1,官网下载

http://mirrors.cnnic.cn/apache/thrift/0.9.1/thrift-0.9.1.exe 

2,编辑xuser.thrift

1
2
3
4
5
6
7
8
9
10
11
struct User{
     1: string uid,
     2: string uname,
     3: bool usex,
     4: i16 uage
    }
    service UserService{
     void add(1: User u),
     string adduname(1: string uname),
     User get(1: string uid)
}

3,生成IDL

thrift   --gen js:node xuser.thrift

4,目录下会多出文件

拥抱大家庭,nodejs走thrift

5,编辑server.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
var thrift=require("thrift");
var UserService=require(‘./gen-nodejs/UserService.js‘);
var ttypes=require(‘./gen-nodejs/xuser_types‘);
 
 
var users={};
 
var server=thrift.createServer(UserService,
    {
        add:function(user,callback){
            console.log("add stored:",user.uname);
            users[user.uid]=user;
            console.log(users);
            callback();},
        adduname:function(x,callback){
            console.log("adduname stored:",x);
            callback(null,"MMMMM");
        },
        get:function(uid,callback){
            console.log("get received:", uid);
            console.log(users[uid]);
            callback(null,users[uid]);
        }
    }
);
 
server.listen(3000);
console.log("server start");
 
server.on("error",function(e){
    console.log(e);
});

6,编辑client.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
var thrift =require(‘thrift‘);
 
 
var UserService = require(‘./gen-nodejs/UserService.js‘);
var ttypes = require(‘./gen-nodejs/xuser_types‘);
 
 
 
var connection = thrift.createConnection(‘127.0.0.1‘, 3000);
var client = thrift.createClient(UserService, connection);
 
connection.on("error",function(e)
{
    console.log(e);
});
 
 
var x=new ttypes.User({
    uid:‘112‘,
    uname:‘aab‘,
    usex:0,
    uage:‘181‘
});
 
 
 
 
client.add(x,function(err, res){
    console.log("ADD OK1");
    client.get(‘112‘,function(err, res){
        if (err) {
            console.error(err);
        } else {
            console.log("Res:",res);
            connection.end();
        }
    });
    client.adduname(‘112‘,function(err, res){
        if (err) {
            console.error(err);
        } else {
            console.log("Res:",res);
            connection.end();
        }
    });
});

7,装nodejs的thrift包

npm install thrift

8,node server.js

9,node client.js

拥抱大家庭,nodejs走thrift

OK,小功告成。

拥抱大家庭,nodejs走thrift,布布扣,bubuko.com

拥抱大家庭,nodejs走thrift

上一篇:略谈ASP.NET中C#的string引用类型


下一篇:ExtJs ComBox下拉树