云风在skynet中继承了sproto的传输协议,对比protobuf的好处是,能明文看到传输内容,而且skynet不需要protobuf这么功能,所以云风也建议在lua层使用sproto来作为skynet的传输协议。

在examples文件夹中的agent.lua中有用到sproto的例子。下面讲解一下sproto的使用过程和原理:

 

proto.lua的文件中包含一个实例协议:

 1 local sprotoparser = require "sprotoparser"
 2 
 3 local proto = {}
 4 
 5 proto.c2s = sprotoparser.parse [[
 6 .package {
 7     type 0 : integer
 8     session 1 : integer
 9 }
10 
11 handshake 1 {
12     response {
13         msg 0  : string
14     }
15 }
16 
17 get 2 {
18     request {
19         what 0 : string
20     }
21     response {
22         result 0 : string
23     }
24 }
25 
26 set 3 {
27     request {
28         what 0 : string
29         value 1 : string
30     }
31 }
32 
33 quit 4 {}
34 
35 ]]
36 
37 proto.s2c = sprotoparser.parse [[
38 .package {
39     type 0 : integer
40     session 1 : integer
41 }
42 
43 heartbeat 1 {}
44 ]]
45 
46 return proto
View Code

相关文章: