pinus 的我的项目框架和 pomelo 是一样的,感激 pinus 的项目组,这个服务器框架失去了倒退。不同类之间的关系简单,这篇文章没有要梳理其中的关系的内容,只是针对前端服务器向后端服务器发送音讯的过程参考相干代码做个介绍。
客户端向服务器发送音讯
客户端连贯服务器框架的时候会生成一个 socket 对象,socket 对象注册一些事件,这部分代码在 pinus/common/components/connector.ts 文件里。客户端向服务器发送会触发 messege
事件。以下是 messege
的响应
// new message
socket.on('message', (msg) => {
let dmsg = msg;
// if (this.useAsyncCoder) {// return this.handleMessageAsync(msg, session, socket);
// }
if (this.decode) {dmsg = this.decode(msg);
} else if (this.connector.decode) {dmsg = this.connector.decode(msg);
// Perhaps protobuf decoder error can be captured here.
// if (dmsg && dmsg.body === null) {
// // protobuf decode error
// logger.error('fail to decode the msg body received from client. msg:', dmsg);
// return;
// }
}
if (!dmsg) {
// discard invalid message
return;
}
// use rsa crypto
if (this.useCrypto) {let verified = this.verifyMessage(session, dmsg);
if (!verified) {logger.error('fail to verify the data received from client.');
return;
}
}
this.handleMessage(session, dmsg);
}); // on message end
办法调用 this.server.globalHandle
这个办法向后端服务器发送音讯
最初调用 this.handleMessage(session, dmsg)
这个办法将音讯返回给客户端