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)
这个方法将消息返回给客户端
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。