/// <summary> /// 广播转发的消息 /// </summary> /// <param name="header"></param> /// <param name="by"></param> /// <param name="status"></param> public void BroadcastProxy(ushort header, ByteArray by, eSessionStatus status) { foreach (var obj in m_sessions) { ClientSession session = obj.Value; if (session.session_status == status) { ForClientNetManager.Instance.SendProxy(session.conn_idx, header, by); } } }
/// <summary> /// 广播消息 /// </summary> /// <param name="packet"></param> public void Broadcast(PacketBase packet, eSessionStatus status) { foreach (var obj in m_sessions) { ClientSession session = obj.Value; if (session.session_status == status) { ForClientNetManager.Instance.Send(session.conn_idx, packet); } } }
/// <summary> /// 主动登出,或异常退出 /// </summary> public void Logout() { if (m_session_status == eSessionStatus.LOGOUTING) { return; } m_session_status = eSessionStatus.LOGOUTING; //发送到ss,登出 if (m_account_idx > 0) { gs2ss.LogoutAccount ss_msg = PacketPools.Get(gs2ss.msg.LOGOUT_ACCOUNT) as gs2ss.LogoutAccount; ss_msg.account_idx = m_account_idx; this.Send2SS(ss_msg); } }
/// <summary> /// 被踢出 /// </summary> public void Kickout() { if (m_session_status == eSessionStatus.LOGOUTING) { return; } m_session_status = eSessionStatus.LOGOUTING; //已经是正式连接的客户端,需要做后续清理工作 if (m_account_idx > 0) {//说明已经登录到ss,需要清理 gs2ss.KickoutAccount msg = PacketPools.Get(gs2ss.msg.KICK_ACCOUNT) as gs2ss.KickoutAccount; msg.account_idx = m_account_idx; this.Send2SS(msg); } }
/// <summary> /// 主动登出,或异常退出 /// </summary> public void Logout() { if (m_session_status == eSessionStatus.LOGOUTING) { return; } m_session_status = eSessionStatus.LOGOUTING; Log.Debug("登出数量:" + ++loginout_count); //发送到ss,登出 if (m_account_idx > 0) { gs2ss.LogoutAccount ss_msg = PacketPools.Get(gs2ss.msg.LOGOUT_ACCOUNT) as gs2ss.LogoutAccount; ss_msg.client_uid = m_client_uid; ss_msg.account_idx = m_account_idx; this.Send2SS(ss_msg); } }
public void Setup(long conn_idx) { m_conn_idx = conn_idx; m_account_idx = 0; m_spid = 0; m_fs_uid = 0; m_ss_uid = 0; m_db_id.Reset(); m_client_uid.conn_idx = conn_idx; m_client_uid.srv_uid = ServerNetManager.Instance.srv_uid; m_conn_time = Time.timeSinceStartup; m_login_error_count = 0; m_last_packet_idx = 0; m_cooldown_verify.Reset(); m_speed_checker.Reset(m_conn_idx); m_session_status = eSessionStatus.CREATED; }