ASP.NET会话之间进行通信的最佳方式?

时间:2015-12-16 21:58:40

标签: asp.net session c#-4.0 signalr

我正在尝试找到什么是正确的设计,客户端将打开2个会话,其中一个用于上传大文件,另一个用于提供SignalR消息。目标是当服务器处理大文件时,它需要向SignalR通道提供状态消息,以便客户端在上载期间和之后通知服务器上发生的进程。假设在上传时,客户端将提供SignalR标识符,以便处理文件上载的工作人员可以将其传递给Hub,但我真正不确定的是上传工作者应该如何与Hub连接。我是否维护一个静态单例类,该类包含对集线器的持久引用?或者我只是创建一个新的HTTP会话并通过环回发送?或者是否有一种我甚至没有想到的更好的方法?

1 个答案:

答案 0 :(得分:1)

您可以使用依赖注入来获取对集线器的引用;

public class UploadController 
{
    IHubContext<YourHub> _hub;
    public UploadController(IHubContext<YourHub> hub) 
    {
        _hub = hub;
    }

    public ActionResult Upload(SomeFile model)
    {
        // start upload processing

        // send progress updates
        var conectionId = DetermineConnectionId(); // store it in a dictionary maybe?
        _hub.Clients.Client(connectionId).SendProgressUpdate();
    }
}