pinus学习(3)

本篇学习:

  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 是后端服务器 而不是前端服务器。

原文地址:https://www.cnblogs.com/dmc-nero/p/12442491.html