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

  • 相关阅读:
    [转](五)unity4.6Ugui中文教程文档-------概要-UGUI Interaction Components
    [转](四)unity4.6Ugui中文教程文档-------概要-UGUI Visual Components
    [转](三)unity4.6Ugui中文教程文档-------概要-UGUI Basic Layout
    [转](二)unity4.6Ugui中文教程文档-------概要-UGUI Canvas
    [转](一)unity4.6Ugui中文教程文档-------概要
    Blog List
    引用总结
    动态申请二维数组
    malloc/free
    memset
  • 原文地址:https://www.cnblogs.com/dmc-nero/p/12442491.html
Copyright © 2020-2023  润新知