在SignalR中,我们常见的用法如下:
public class ContosoChatHub : Hub
{
public Task JoinRoom(string roomName)
{
return Groups.Add(Context.ConnectionId, roomName);
}
public Task LeaveRoom(string roomName)
{
return Groups.Remove(Context.ConnectionId, roomName);
}
}
随之而来的问题就是当用户直接断开时这个Groups.Remove方法根本没有调用到,这个会不会有问题呢?如果你查看git上源码就会发现原来是你想多了,当用户意外断开时,会自行检查一下是不是属于任何一个组,如果为是,则会自动移除它。