Esempio n. 1
0
        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 }");
            }
        }
Esempio n. 2
0
        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);
        }