Exemplo n.º 1
0
        public void CreateSignal()
        {
            string userId   = "12aaf50353844a12b5519f4587b8d564";
            var    userInfo = new { UserName = "******", Department = "测试部门" };

            //申请一个信号,设置时间为5分钟
            var signal = consumer.ApplyFor(userId, userInfo, 5);

            //释放一个信号
            consumer.ReleaseSignal(signal);
            //查找一个信号
            var findSignal = consumer.GetSignal(userId);

            //信号是否为空
            Assert.IsNull(findSignal);
        }
        /// <summary>
        /// 登录并且记录当前用户的登录标记
        /// </summary>
        /// <param name="userRedisModel">当前登录信息</param>
        /// <returns>登录标记</returns>
        public string SignIn(UserRedisModel userRedisModel)
        {
            var    signal   = internalConsumer.GetSignal(userRedisModel.UserName);
            string loginKey = RandomKey.GetKey();

            #region 释放已经登录信号,创建新的登录信号
            if (signal != null)
            {
                LoginChannel.ChannelInstance.Logout(userRedisModel);
                internalConsumer.ReleaseSignal(signal);
            }
            internalConsumer.ApplyFor(userRedisModel.UserName, loginKey);
            #endregion
            #region 客户端写入SignalRId
            var signalRId = new HttpCookie(CookieKey.SignalRId)
            {
                Name    = CookieKey.SignalRId,
                Expires = DateTime.Now.AddDays(1),
                Value   = loginKey
            };
            HttpContext.Current.Response.Cookies.Add(signalRId);
            #endregion
            return(loginKey);
        }