private void TcpStateUpLine(AppSession state) { lockSessions.Enter( ); appSessions.Add(state); lockSessions.Leave( ); // 提示上线 ClientOnline?.Invoke(state); AllClientsStatusChange?.Invoke(ClientCount); // 是否保存上线信息 if (IsSaveLogClientLineChange) { LogNet?.WriteInfo(ToString( ), $"[{state.IpEndPoint}] Name:{ state?.LoginAlias } { StringResources.NetClientOnline }"); } }
private void TcpStateDownLine(AppSession state, bool is_regular, bool logSave = true) { lockSessions.Enter( ); appSessions.Remove(state); lockSessions.Leave( ); // 关闭连接 TcpStateClose(state); // 判断是否正常下线 string str = is_regular ? StringResources.NetClientOffline : StringResources.NetClientBreak; ClientOffline?.Invoke(state, str); AllClientsStatusChange?.Invoke(ClientCount); // 是否保存上线信息 if (IsSaveLogClientLineChange && logSave) { LogNet?.WriteInfo(ToString(), $"[{state.IpEndPoint}] Name:{ state?.LoginAlias } { str }"); } }
private void CalculateOnlineClients( ) { StringBuilder builder = new StringBuilder( ); HybirdLockSockets.Enter( ); for (int i = 0; i < All_sockets_connect.Count; i++) { builder.Append(string.Format(FormatClientOnline, All_sockets_connect[i].IpAddress , All_sockets_connect[i].LoginAlias)); } HybirdLockSockets.Leave( ); if (builder.Length > 0) { m_AllClients = builder.Remove(0, 1).ToString( ); } else { m_AllClients = string.Empty; } // 触发状态变更 AllClientsStatusChange?.Invoke(m_AllClients); }