[egret+pomelo]学习笔记(1)

[egret+pomelo]学习笔记(2)

[egret+pomelo]学习笔记(3)

egret

pomelo

pomelo捡宝项目

准备工作

1.下载并搭建pomelo项目

2.下载pomelo捡宝项目(github上下载的,最好是看一遍git上的教程,再进行搭建会比较顺利)

3.下载的捡宝项目[Treasures] 中有简略的项目教程,可以帮助我们快速搭建和熟悉捡宝项目。

开始创建Egret项目:

 因个人比较熟悉egret引擎,在论坛中找到 egret  pomelo的第三方库

1.客户端代码:

使用egret wing 创建游戏项目,在项目src目录下,创建network文件夹,在文件夹下新建PomeloSocket类用来链接Pomelo服务端

  1 module network {
  2     /**
  3      * 链接pomelo服务端
  4      */
  5     export class PomeloSocket {
  6         public constructor() {
  7         }
  8 
  9         private pomelo: Pomelo;
 10         /**
 11          * 当前正在操作的是服务端
 12          */
 13         private currServer: network.PomeloService;
 14         /**
 15          * 服务端状态 是否开启
 16          */
 17         private running: boolean = false;
 18 
 19         init() {
 20             if (this.pomelo == null) {
 21                 this.pomelo = new Pomelo();
 22 
 23                 this.pomelo.on('server_push_message', (msg) => {
 24                     var route = msg["route"];
 25                     //根据服务端返回派发事件
 26                     {
 27                         switch (route) {
 28                             case "addEntities":
 29                                 Global.dispatchEvent(events.PomeloServerEvents.ADDENTITIES, msg);
 30                                 break;
 31                             case "rankUpdate":
 32                                 Global.dispatchEvent(events.PomeloServerEvents.RANKUPDATE, msg);
 33                                 break;
 34                             case "onUserLeave":
 35                                 Global.dispatchEvent(events.PomeloServerEvents.USERLEAVE, msg);
 36                                 break;
 37                             case "removeEntities":
 38                                 Global.dispatchEvent(events.PomeloServerEvents.REMOVEENTITIES, msg);
 39                                 break;
 40                             case "onMove":
 41                                 Global.dispatchEvent(events.PomeloServerEvents.ENTITYMOVE, msg);
 42                                 break;
 43                             case "onChangeStage":
 44                                 Global.dispatchEvent(events.PomeloServerEvents.STAGECHANGE, msg);
 45                                 break;
 46                             default:
 47                                 trace("收到新的需要处理的事件~~~~~~~~~~~~~~待处理信息为:");
 48                                 trace(msg);
 49                                 break;
 50                         }
 51                     }
 52                 });
 53 
 54                 this.pomelo.on('onKick', (msg) => {
 55                     trace("onKick");
 56                 });
 57 
 58                 this.pomelo.on('heartbeat_timeout', () => {
 59                     trace("heartbeat_timeout");
 60                 });
 61 
 62                 this.pomelo.on('close', (e: CloseEvent) => {
 63                     trace(e.currentTarget["url"] + "的链接被断开");
 64                 });
 65             }
 66         }
 67 
 68         /**
 69          * 打开服务端 
 70          * @param serverType:服务端类型
 71          * @param host:ip
 72          * @param port:端口
 73          * @param callback:回调函数
 74          * @param log:是否启用日志
 75          */
 76         open(serverType: network.PomeloService, host: string, port: number, callback?: Function, log: boolean = true) {
 77             this.pomelo.init({ host: host, port: port, log: log }, false, (succeedRes) => {
 78                 this.currServer = serverType;
 79                 this.running = true;
 80                 switch (serverType) {
 81                     case network.PomeloService.GATE:
 82                         Global.dispatchEvent(events.PomeloServerEvents.CONNECTION_GATE_SUCCEED);
 83                         break;
 84                     case network.PomeloService.CONNECTION:
 85                         Global.dispatchEvent(events.PomeloServerEvents.CONNECTION_CONNECT_SUCCEED);
 86                         break;
 87                     default:
 88                         trace("========================试图打开程序中未知服务器,请求被拒绝=========================================");
 89                         break;
 90                 }
 91             }, (errRES) => {
 92                 switch (serverType) {
 93                     case network.PomeloService.GATE:
 94                         Global.dispatchEvent(events.PomeloServerEvents.CONNECTION_GATE_ERROR);
 95                         break;
 96                     case network.PomeloService.CONNECTION:
 97                         Global.dispatchEvent(events.PomeloServerEvents.CONNECTION_CONNECT_ERROR);
 98                         break;
 99                     default:
100                         trace("========================试图打开程序中未知服务器,请求被拒绝=========================================");
101                         break;
102                 }
103             }, (closeRes) => {
104                 trace("一个服务端关闭完成。");
105             }, null);
106         }
107 
108         /**
109          * 发起请求
110          * @param route: 路由 (服务端处理函数)
111          * @param msg:内容
112          * @param callback:回调函数
113          * @param thisArg:参数
114          */
115         request(route: string, msg: any, callback: Function, thisArg?: any): void {
116             this.pomelo.request(route, msg, (response) => {
117                 callback.call(thisArg, response);
118             });
119         }
120 
121         /**
122          * 通知
123          */
124         notify(route: string, msg: any): void {
125             this.pomelo.notify(route, msg);
126         }
127 
128         /**
129          * 关闭当前服务
130          */
131         disconnect() {
132             this.pomelo.disconnect();
133             this.running = false;
134             Global.dispatchEvent(events.PomeloServerEvents.DISCONNECT_SUCCEED, { currServer: this.currServer });
135         }
136 
137         /**
138          * 获取当前的服务端
139          */
140         getCurrServer(): PomeloService {
141             return this.currServer;
142         }
143         /**
144          * 获取当前的服务端状态
145          */
146         isRunning(): boolean {
147             return this.running;
148         }
149     }
150 }
View Code

相关文章:

  • 2021-07-23
  • 2021-04-26
  • 2022-02-03
  • 2022-03-10
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-11-14
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2022-12-23
  • 2021-12-18
相关资源
相似解决方案