Javascript 信号员通过程序<;T>;从js客户端到hub
是否可以将Javascript 信号员通过程序<;T>;从js客户端到hub,javascript,c#,signalr,signalr-hub,Javascript,C#,Signalr,Signalr Hub,是否可以将IProgress从js客户端传递到C#Signal hub?我想做的是: 在轮毂侧: public class ProgressHub : Hub<IProgressHub> { public async Task Foo(string jobId, IProgress<int> progress) { Console.WriteLine($"Started monitoring {jobId}");
IProgress
从js客户端传递到C#Signal hub?我想做的是:
在轮毂侧:
public class ProgressHub : Hub<IProgressHub>
{
public async Task Foo(string jobId, IProgress<int> progress)
{
Console.WriteLine($"Started monitoring {jobId}");
for (int i = 0; i < 100; i++)
{
await Task.Delay(TimeSpan.FromSeconds(1)); // Simulate some work
progress.Report(i);
}
}
}
public interface IProgressHub
{
Task Foo(string jobId, Progress<int> progress);
}
signarhub上的方法被调用,但IProgress总是以null结束。我刚刚在中找到答案 在客户端和中心(通常称为HubState)之间传递任意状态的功能已被删除,以及对进度消息的支持。目前没有对应的hub代理 最后,我决定执行以下操作: 在集线器端:
RegisterToProgress([…])
将在内部调用将消息发送到客户端的SendProgress([…])
在js客户端:调用RegisterToProgress
并收听SendProgress
消息
connection
.invoke("Foo", "this-is-job-id", progressPercentage => console.log(`Processed ${value}%`))
.then(() => console.log("Processing done"));