我使用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();
}
发布于 2014-06-23 20:45:18
在我这边,当客户端连接时,我存储来自客户端的变量
<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();
}
https://stackoverflow.com/questions/24317143
复制相似问题