我正在使用OnConnected和OnDisconected来保持用户陷阱并减少内存。
我的问题是我无法在SignalR中分配任何变量。我正在使用以下代码。
当我阅读Clients.Caller.userid时,它总是为空。但是,在我指定xxSameProcess变量不为空之后,我可以立即读取它。
有什么东西我不见了吗?
public override System.Threading.Tasks.Task OnConnected()
{
var user = CreateUser();
Clients.Caller.userid = user.UserId;
object xxSameProcess = Clients.Caller.userid;
return base.OnConnected();
}
public override System.Threading.Tasks.Task OnDisconnected()
{
object xx = Clients.Caller.userid;
CreateDelete( Clients.Caller.userid );
return base.OnConnected();
}
答案 0 :(得分:1)
就我而言,我在连接时从客户端存储我的变量
<script src="~/signalr/hubs"></script>
<script type="text/javascript">
(function ($) {
//some stuff
$.connection.hub.qs = { 'uid': '@guid' };
$.connection.hub.start();
})(jQuery);
</script>
我可以使用查询字符串
从服务器访问它public override Task OnConnected()
{
var uid = Context.QueryString["uid"];
//some stuff
return base.OnConnected();
}
public override Task OnDisconnected()
{
var uid = Context.QueryString["uid"];
//some stuff
return base.OnDisconnected();
}
public override Task OnReconnected()
{
var uid = Context.QueryString["uid"];
//some stuff
return base.OnReconnected();
}