Exemplo n.º 1
0
        /// <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();
                }
            }
        }
Exemplo n.º 2
0
        /// <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();
        }
Exemplo n.º 3
0
        /// <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
        }
Exemplo n.º 4
0
 /// <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();
 }
Exemplo n.º 5
0
 /// <summary>
 /// 新事件处理代码中发送欢迎信息给客户端
 /// </summary>
 /// <param name="appSession"></param>
 public void appServer_NewSessionConnected(ChatsSession appSession)
 {
     UpdateConnection();
     ShowMsg("有新的连接,正在接收数据……");
 }