我试图找出什么是正确的设计,客户端将打开两个会话,其中一个用于上传一个大文件,另一个用于提供SignalR消息传递。其目标是,当服务器处理大文件时,它需要向SignalR通道提供状态消息,以便客户端在上传过程中和上传期间得到服务器上进程的通知。假设在上传时,客户端将提供SignalR标识符,以便处理文件上载的工作人员能够将其传递给集线器,但我不确定上载工作人员应该如何与集线器连接。是否维护包含对集线器的持久引用的静态单例类?还是我只是做了一个新的HTTP会话,并通过环回发送?还是有什么更好的方法我都没想过?
发布于 2015-12-16 23:28:55
您可以使用依赖注入获得对集线器的引用;
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();
}
}https://stackoverflow.com/questions/34322869
复制相似问题