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); }