Signalr 向在信号器中已断开连接一段时间的用户发送消息

Signalr 向在信号器中已断开连接一段时间的用户发送消息,signalr,disconnect,Signalr,Disconnect,考虑在使用SignalR实现消息传递时的一种情况,用户断开了一段时间的连接,您希望再次向她发送她错过的消息 这是我的简单集线器: [HubName("ContosoChatHub")] public class ContosoChatHub : Hub { } 我广播了这个信息: var hubContext = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub>(); hubContext.Clients.All

考虑在使用SignalR实现消息传递时的一种情况,用户断开了一段时间的连接,您希望再次向她发送她错过的消息

这是我的简单集线器:

[HubName("ContosoChatHub")]
public class ContosoChatHub : Hub
{

}
我广播了这个信息:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<ContosoChatHub>();
hubContext.Clients.All.AddCallForAgent(new {  });
var-hubContext=GlobalHost.ConnectionManager.GetHubContext();
hubContext.Clients.All.AddCallForAgent(新{});

我想到的第一件事是将此添加到您的中心:

private static ConcurrentDictionary<string, Queue<Message>> UnconfirmedMessages;
私有静态ConcurrentDictionary未确认消息;
字符串
类型将映射用户id(用户应经过身份验证)

  • 无论何时向用户发送消息,都会将其添加到队列中 还有
  • 然后,用户/客户端将向中心发送确认 使用收到的消息ID(即:嘿,我收到了消息1、2、3和 4). 此时,您将从队列中删除这些消息
  • 当客户端重新连接时,它会向集线器请求所有未确认的消息。这将使您再次进入第2步

  • 我想到的第一件事是将此添加到您的中心:

    private static ConcurrentDictionary<string, Queue<Message>> UnconfirmedMessages;
    
    私有静态ConcurrentDictionary未确认消息;
    
    字符串
    类型将映射用户id(用户应经过身份验证)

  • 无论何时向用户发送消息,都会将其添加到队列中 还有
  • 然后,用户/客户端将向中心发送确认 使用收到的消息ID(即:嘿,我收到了消息1、2、3和 4). 此时,您将从队列中删除这些消息
  • 当客户端重新连接时,它会向集线器请求所有未确认的消息。这将使您再次进入第2步

  • 您好@xleon,我如何获取用户id?有没有关于signalR用户授权的文档?有很多关于这个主题的文章。但是信号器文档本身解释得很好hi@xleon,我如何获得用户id?有没有关于signalR用户授权的文档?有很多关于这个主题的文章。但信号器文档本身解释得非常好