本篇学习:
1、gate服务器代码编写。
2、设置服务器和客户端的连接方式。
3、客户端代码编写。
4、connector服务器职责。
5、session的概念。
6、connector服务器代码编写。
7、后端服务器的职责。
gate服务器负载均衡代码编写:
gateHandle.ts:
设置服务器的连接方式:
这里有相关的解释:
如果不设置的话,客户端就连接不上服务器,会报这个错误:
客户端请求gate服务器代码编写:
1、我使用的是egret作为客户端,所以关于egret创建项目部分,我就不截图了。
2、接下来是egret客户端的pinus第三方库的安装,由于也比较简单,只要拿到第三方库文件即可。所以也不截图了。
3、这是编写的客户端代码:
客户端请求gate服务器的效果:
1、启动pinus的所有服务器。
pinus学习(1)中,以及包含服务器启动的知识,这里不再叙述。
2、启动客户端。
egret的基本启动方式,这里不再叙述。
3、效果:
connector服务器职责:
gate服务器返回了可用的connector服务器地址,客户端就可以去连接这个connector服务器了。
那么,connector服务器又该做什么呢?
1、维护客户端的session。
1、当客户端连接的时候,把客户端的uid绑定到session里。
2、当客户端断开连接时,把客户端的uid从session里解绑。
2、转发客户端请求给后端服务器。
1、通过rpc转发请求给后端服务器。
3、将后端服务器的响应信息返回给客户端。
session的概念:
由于涉及到了session、FrontendSession、SessionService,所以解释一下:
大致意思:
1、session一旦确立,不可修改。
2、可以通过FrontendSession.push()
将 FrontendSession 和 session 的 settings 字段同步。
3、可以通过FrontendSession.bind()来给session绑定uid。
4、SessionService可以拿到所有的session信息。
5、FrontendSession.unbind(),用来给session解绑。
6、BackendSession 和 FrontendSession 一样。
只不过一个是后端服务器用的,一个是前端服务器用的。
connector服务器代码编写:
由于rpc调用涉及到后端服务器的代码编写,所以暂时先不写。
接下来解释一下代码:
1、维护客户端的session。
1、当客户端连接的时候,把客户端的uid绑定到session里。
session.abind()这个API:
其实也就是用的FrontendSession.bind();
session.set()这个API:
给session的settings字段设置自定义数据。
session.push()这个API:
将 FrontendSession 和 session 的 settings 字段同步。
2、当客户端断开连接时,把客户端的uid从session里解绑。
同样的,由于涉及rpc的调用,暂时先不写。
2、转发客户端请求给后端服务器。
1、通过rpc转发请求给后端服务器。
由于涉及后端服务器,这里就先不写,等后面介绍了后端服务器的概念和代码编写后,再完善。
3、将后端服务器的响应信息返回给客户端。
后端服务器的职责:
职责:
1、接收connector服务器的rpc调用。
定义一系列的rpc方法,以供connector服务器调用。
2、处理业务逻辑。
实现业务逻辑方法的定义,用以给客户端响应。
具体解释:
1、接收connector服务器的rpc调用。
{
1、定义UserRpc接口。
{
定义这个接口的目的,是为了在connector服务器中能调用chat服务器对应的rpc接口。
如:
{
可以看到connector服务器中使用rpc调用时,就是UserRpc这个接口。
还有就是这两个:
设置好这两个,rpc才能正常调用。
}
如果有多个Remoter文件的话,如:
{
那么UserRpc接口会自动合并,connector服务器中也可以正常调用:
}
}
2、定义Remoter类。
这个类也就是用于定义rpc的业务逻辑了。
}
2、处理业务逻辑。
1、定义handle逻辑方法。
此时,用到的session就是BackendSession,因为 chat 是后端服务器 而不是前端服务器。