是否可以建立特定于会话的 SIgnalR 连接?
Is it possible to make a session-specific SIgnalR connection?
让我们假设我正在使用 SignalR 实现访客计数器。每当有新访客到达时,静态变量就会递增,而每当访客离开建筑物时,静态变量就会递减。我想知道连接是否是特定于会话的,所以我可以在创建新会话时递增计数器,并在不再连接会话时递减计数器。
这意味着每当用户成功登录或打开浏览器中的第一个选项卡时,计数器应该递增,而每当浏览器中的最后一个此类选项卡关闭时,计数器应该递减.我可以这样做:
- 在服务器上,我存储了所有具有活动连接的会话
- 每当打开此类选项卡时,都会调用服务器方法,该方法将检查当前会话是否在存储中,如果是,则增加选项卡计数
- 只要关闭此类选项卡,就会调用服务器方法,这将减少选项卡计数,如果为 0,则从存储中删除会话
- 只要连接丢失(例如,浏览器关闭、互联网连接丢失),会话就会从存储中删除
我想知道开箱即用的 SignalR 是否可行,以便 SignalR 跟踪与 sessionid 的连接。是吗?
考虑到您正在使用 Hub
类,您可以通过使用服务器端事件和相应的处理程序(例如 OnConnected
和 OnDisconnected
.
public class ContosoChatHub : Hub
{
public override Task OnConnected()
{
//this is called after connection is started.
return base.OnConnected();
}
public override Task OnDisconnected()
{
//called when the connection is disconnected.
return base.OnDisconnected();
}
}
更多信息,请查看How to handle connection lifetime events in the Hub class。
更新: 每当建立新连接时,SignalR 框架将自动调用 OnConnected
。在那里你可以增加你的静态变量什么的。在 OnDisconnected
中,您可以减少每当连接为 destroyed/stopped 时调用的变量。
让我们假设我正在使用 SignalR 实现访客计数器。每当有新访客到达时,静态变量就会递增,而每当访客离开建筑物时,静态变量就会递减。我想知道连接是否是特定于会话的,所以我可以在创建新会话时递增计数器,并在不再连接会话时递减计数器。
这意味着每当用户成功登录或打开浏览器中的第一个选项卡时,计数器应该递增,而每当浏览器中的最后一个此类选项卡关闭时,计数器应该递减.我可以这样做:
- 在服务器上,我存储了所有具有活动连接的会话
- 每当打开此类选项卡时,都会调用服务器方法,该方法将检查当前会话是否在存储中,如果是,则增加选项卡计数
- 只要关闭此类选项卡,就会调用服务器方法,这将减少选项卡计数,如果为 0,则从存储中删除会话
- 只要连接丢失(例如,浏览器关闭、互联网连接丢失),会话就会从存储中删除
我想知道开箱即用的 SignalR 是否可行,以便 SignalR 跟踪与 sessionid 的连接。是吗?
考虑到您正在使用 Hub
类,您可以通过使用服务器端事件和相应的处理程序(例如 OnConnected
和 OnDisconnected
.
public class ContosoChatHub : Hub
{
public override Task OnConnected()
{
//this is called after connection is started.
return base.OnConnected();
}
public override Task OnDisconnected()
{
//called when the connection is disconnected.
return base.OnDisconnected();
}
}
更多信息,请查看How to handle connection lifetime events in the Hub class。
更新: 每当建立新连接时,SignalR 框架将自动调用 OnConnected
。在那里你可以增加你的静态变量什么的。在 OnDisconnected
中,您可以减少每当连接为 destroyed/stopped 时调用的变量。