コード例 #1
0
        public override void OnServerReceive(TransportEventData eventData)
        {
            CentralServerPeerInfo tempPeerInfo;

            switch (eventData.type)
            {
            case ENetworkEvent.ConnectEvent:
                Logging.Log(LogTag, "OnPeerConnected peer.ConnectionId: " + eventData.connectionId);
                ConnectionIds.Add(eventData.connectionId);
                break;

            case ENetworkEvent.DataEvent:
                ReadPacket(eventData.connectionId, eventData.reader);
                break;

            case ENetworkEvent.DisconnectEvent:
                Logging.Log(LogTag, "OnPeerDisconnected peer.ConnectionId: " + eventData.connectionId + " disconnectInfo.Reason: " + eventData.disconnectInfo.Reason);
                ConnectionIds.Remove(eventData.connectionId);
                // Remove disconnect map spawn server
                MapSpawnServerPeers.Remove(eventData.connectionId);
                // Remove disconnect map server
                if (MapServerPeers.TryGetValue(eventData.connectionId, out tempPeerInfo))
                {
                    MapServerPeersByMapId.Remove(tempPeerInfo.extra);
                    MapServerPeersByInstanceId.Remove(tempPeerInfo.extra);
                    MapServerPeers.Remove(eventData.connectionId);
                    RemoveMapUsers(eventData.connectionId);
                }
                break;

            case ENetworkEvent.ErrorEvent:
                Logging.LogError(LogTag, "OnPeerNetworkError endPoint: " + eventData.endPoint + " socketErrorCode " + eventData.socketError + " errorMessage " + eventData.errorMessage);
                break;
            }
        }
コード例 #2
0
 protected override void OnStopServer()
 {
     base.OnStopServer();
     MapUsersByCharacterId.Clear();
     ConnectionIdsByCharacterId.Clear();
     ConnectionIdsByCharacterName.Clear();
     MapSpawnServerPeers.Clear();
     MapServerPeers.Clear();
     MapServerPeersByMapId.Clear();
     MapServerPeersByInstanceId.Clear();
 }
コード例 #3
0
        private void HandleUpdateGuild(MessageHandlerData messageHandler)
        {
            long connectionId          = messageHandler.ConnectionId;
            UpdateGuildMessage message = messageHandler.ReadMessage <UpdateGuildMessage>();

            if (MapServerPeers.ContainsKey(connectionId))
            {
                foreach (long mapServerConnectionId in MapServerPeers.Keys)
                {
                    if (mapServerConnectionId != connectionId)
                    {
                        SendPacket(mapServerConnectionId, 0, DeliveryMethod.ReliableOrdered, MMOMessageTypes.UpdateGuild, (writer) => writer.PutValue(message));
                    }
                }
            }
        }