由于我们以前客户端使用的是lua,sproto协议使用的是字符串方式,想在js也同样这么出来,请求有对应的方案吗?
我这样尝试过没有成功:
proto.js
`var proto = {};
proto.c2s = `
.package {
type 0 : integer
session 1 : integer
}
.User {
nickName 0 : string
sex 1 : integer
}
auth 1 {
request {
code 0 : string
platform 1 : integer
}
response {
result 0 : integer
user 1 : User
}
}
startMove 2 {
request {
direction 0 : integer
}
response {
result 0 : integer
}
}
endMove 3 {
request {
}
response {
result 0 : integer
}
}
startFire 4 {
request {
}
response {
result 0 : integer
}
}
endFire 5 {
request {
}
response {
result 0 : integer
}
}
`;
proto.s2c = `
.package {
type 0 : integer
session 1 : integer
}
.Player {
hp 0 : integer
mp 1 : integer
name 2 : string
race 3 : string
level 4 : integer
exp 5 : integer
}
startMovePlayer 1 {
request {
direction 0 : integer
playerId 1 : integer
}
}
endMovePlayer 2 {
request {
playerId 0 : integer
}
}
startPlayerFire 3 {
request {
playerId 0 : integer
weaponId 1 : integer
}
}
endPlayerFire 4 {
request {
playerId 0 : integer
weaponId 1 : integer
}
}
showPlayer 5 {
request {
player 0 : Player
}
}
`;
module.exports = proto;`
test.js
`let protoTest = require("./proto")
let sproto = require("./sproto");
cc.Class({
extends: cc.Component,
onLoad: function () {
let server = sproto.createNew(protoTest.c2s);
server.dump();
this.serverHost = server.host();
let serverSender = this.serverHost.attach(sproto.createNew(protoTest.s2c));
let client = sproto.createNew(protoTest.s2c);
client.dump();
this.clientHost = client.host();
this.clientSender = this.clientHost.attach(sproto.createNew(protoTest.c2s));
this._c2sRequest()
},
// 客户端请求应答流程
_c2sRequest : function () {
// 1. 客户端传输数据给服务器
let buffer = this.clientSender("auth", { code: "aaaabbbbccccdddd", platform: 1 }, 1);
// // 2. 服务端接收处理数据, 再返回数据给客户端
let ret = this.serverHost.dispatch(buffer);
console.log(ret);
buffer = ret.responseFunc({ result: 0, user: { nickName: "先知比利", sex: 0 } });
// 3. 客户端接收服务器的返回数据
ret = this.clientHost.dispatch(buffer);
console.log(ret);
},
})`