//通知进入场景 public void NotifyLoginEnterScene(ServerClient client, CharacterSceneInfo info, ulong sceneGuid, ServiceDesc desc) { Logger.Info("Enter Game {0} - NotifyEnterScene - 1 - {1}", info.CharacterId, TimeManager.Timer.ElapsedMilliseconds); Logger.Info("NotifyEnterScene {0}, {1}.", info.CharacterId, info.SceneInfo.Server.RemoteEndPoint); var content = new __RPC_Scene_PrepareDataForEnterGame_RET_uint64__(); content.ReturnValue = sceneGuid; var message = new ServiceDesc(); message.FuncId = 3051; message.ServiceType = (int)ServiceType.Login; message.PacketId = desc.PacketId; message.Data = ProtocolExtension.Serialize(content); message.Type = desc.Type; message.CharacterId = desc.CharacterId; message.ClientId = desc.ClientId; client.SendMessage(message); }
// 服务器收到消息 public override void ServerOnMessageReceived(ServiceDesc desc) { try { var type = (MessageType)desc.Type; Logger.Debug("ServerOnMessageReceived ,type={0},FuncId={1}", type, desc.FuncId); switch (type) { case MessageType.CS: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.CS is Error! FuncId={0}", desc.FuncId); break; case MessageType.SC: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SC is Error! FuncId={0}", desc.FuncId); break; case MessageType.Connect: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Connect is Error! FuncId={0}", desc.FuncId); break; case MessageType.Lost: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Lost is Error! FuncId={0}", desc.FuncId); break; case MessageType.Sync: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.Sync is Error! FuncId={0}", desc.FuncId); break; case MessageType.Ping: break; case MessageType.SB: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SB is Error! FuncId={0}", desc.FuncId); break; case MessageType.BS: OnSocketListenerMessageReceiveBS(desc); return; case MessageType.SCAll: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SCAll is Error!"); break; case MessageType.SCServer: OnSocketClientMessageReceivedSCServer(desc); return; case MessageType.SCList: OnSocketClientMessageReceivedSCList(desc); return; case MessageType.SS: case MessageType.SAS: case MessageType.PrepareData: var routing = GetRouting(desc); if (routing == ulong.MaxValue) { if (desc.FuncId == 3501) { OnNotifyConnected(desc); return; } return; } if (desc.FuncId == 3051) { var chara = GetCharacter(desc.CharacterId); //Logger.Fatal("PrepareDataForEnterGame sceneGuid = {0}", chara.SceneInfo.SceneGuid); if (chara != null) { var content = new __RPC_Scene_PrepareDataForEnterGame_RET_uint64__(); content.ReturnValue = chara.SceneInfo.SceneGuid; desc.Data = ProtocolExtension.Serialize(content); } } mFrontEndServer.Clients[routing].SendMessage(desc); return; case MessageType.SASReply: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SASReply is Error! FuncId={0}", desc.FuncId); break; default: Logger.Error("SceneBroker ServerOnMessageReceived MessageType.SB is Error! FuncId={0}", desc.FuncId); return; } var character = GetCharacterInfo(desc.CharacterId); if (character == null) { Logger.Error( "SceneBroker ServerOnMessageReceived character = null desc.CharacterId :{0} ,funcId={1},ServiceType={2},clientId={3},type={4}", desc.CharacterId, desc.FuncId, desc.ServiceType, desc.ClientId, desc.Type); return; } if (character.Gate == null) { Logger.Error("Can not reply message for character 9 = null desc.CharacterI0d :{0} ", desc.CharacterId); return; } // desc.ClientId = character.ClientId; character.Gate.Gate.SendMessage(desc); } catch (Exception ex) { Logger.Warn(ex, "Some error inside ClientMessageReceived "); } }