/// <summary> /// 更新会话(将断开的未能通知到的Session清除) /// </summary> /// <returns></returns> public void UpdateWeicheSession(ChatsSession session) { List <ChatsSession> list = appServer.GetSessions(s => s.UserName == session.UserName).ToList(); foreach (ChatsSession s in list) { if (s.SessionID != session.SessionID) { s.Close(); } } }
/// <summary> /// 请求事件入口 /// </summary> /// <param name="session"></param> /// <param name="rInfo"></param> private void appServer_RequestHandler(ChatsSession session, IBaseRequestInfo baseInfo) { StringBuilder sb = new StringBuilder(); switch (baseInfo.MsgType) { case MsgType.Text: Text_RequestHandler(session, baseInfo); break; } UpdateWeicheSession(session); UpdateConnection(); }
/// <summary> /// 文本消息处理 /// </summary> /// <param name="baseInfo"></param> public void Text_RequestHandler(ChatsSession session, IBaseRequestInfo baseInfo) { TextRequestInfo info = (TextRequestInfo)baseInfo; session.UserName = info.FromUserName; #region 显示请求信息 StringBuilder sb = new StringBuilder(); sb.Append(string.Format("-------------start({0})-----------------\r\n", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"))); sb.Append(string.Format("发送人:{0}\r\n时间:{1}\r\n消息内容:{2}", info.FromUserName, info.CreateTime, info.Content)); sb.Append("\r\n-------------end-----------------\r\n"); ShowMsg(sb.ToString()); foreach (ChatsSession s in GetAllChatsSession()) { if (s.UserName != info.FromUserName) { SessionHelper.SendMessage(s, JsonConvert.SerializeObject(info)); } } #endregion }
/// <summary> /// 会话断开事件处理代码 /// </summary> /// <param name="appSession"></param> public void appServer_SessionClosed(ChatsSession appSession, SuperSocket.SocketBase.CloseReason closeReason) { ShowMsg(string.Format("用户[{0}]退出登录,原因:{1}", appSession.UserName, closeReason.ToString())); UpdateConnection(); }
/// <summary> /// 新事件处理代码中发送欢迎信息给客户端 /// </summary> /// <param name="appSession"></param> public void appServer_NewSessionConnected(ChatsSession appSession) { UpdateConnection(); ShowMsg("有新的连接,正在接收数据……"); }