/// <summary> /// Only work for tcp /// </summary> protected virtual void OnConnected() { if (!ClientPool.ContainsKey(Session.RemoteIPEndPoint)) { ClientPool.TryAdd(Session.RemoteIPEndPoint, this); } }
/// <summary> /// Only work for tcp /// </summary> protected virtual void OnDisconnected() { if (ClientPool.ContainsKey(Session.RemoteIPEndPoint)) { ClientPool.Remove(Session.RemoteIPEndPoint); } Dispose(); }
public ClientBase(ISession session) { Session = session; EventBinding(); lock (ClientPool) { // we fire this when there are no record in Sessions if (!ClientPool.ContainsKey(session.RemoteIPEndPoint)) { ClientPool.Add(Session.RemoteIPEndPoint, this); } } }
public void AddJoin(JoinInfo joinin) { if (joinin != null) { if (ClientPool.ContainsKey(joinin.ClientID) == false) { ConnectedClientCount += 1; VirtualClient client = new VirtualClient(joinin); CharactorPool.JoinRoom(joinin.Charactor); //申请写锁 readerWriterLock.EnterWriteLock(); ClientPool.Add(joinin.ClientID, client); //释放写锁 readerWriterLock.ExitWriteLock(); AsyncClient(); } } }