/// <summary> /// 业务只需要具体实现此函数的分发即可, 此处只是简单示例 /// </summary> /// <param name="ev"></param> /// <param name="cmd"></param> /// <param name="ud"></param> /// <param name="channel"></param> public void HandleEvent(NetworkEvent ev, int cmd, NativeDataView ud, int channel) { UnityEngine.Debug.LogFormat("SampleNetworkPacketHandler.HandleEvent, event={0}, cmd={1}, channel={2}", ev, cmd, channel); if (cmd == AppProtocol.CMD_LOGIN_REQ) { // SampelScene应该是 channel:1 收到 var msg = new AppProtocol.LoginReq(); msg.decode(ud); msg.print(); // 回应客户端 var reply = new AppProtocol.LoginResp(); reply.uid = msg.uid; reply.status = 200; // 200 表示success (NativeDataView udReply, Stream hold) = reply.encode(); NetworkServiceManager.Instance.SendSerializedMsg(AppProtocol.CMD_LOGIN_RESP, udReply, AppProtocol.SERVER_CHANNEL); hold.Dispose(); } else if (cmd == AppProtocol.CMD_LOGIN_RESP) { // SampelScene应该是 channel:0 收到 // 打印登录响应消息 var msg = new AppProtocol.LoginResp(); msg.decode(ud); msg.print(); } }
unsafe public void OnConnectSuccess(int channel = 0) { if (channel == AppProtocol.CLIENT_CHANNEL) { Debug.LogFormat("Connect success, channel={0}", channel); // 模拟登录协议 var loginReq = new AppProtocol.LoginReq(); loginReq.uid = 1219; (var ud, var ms) = loginReq.encode(); nsm.SendSerializedMsg(AppProtocol.CMD_LOGIN_REQ, ud, AppProtocol.CLIENT_CHANNEL); ms.Dispose(); } else if (channel == AppProtocol.SERVER_CHANNEL) { Debug.LogFormat("A client income, channel={0}", channel); } }