客户端结果- SignalR - . net



我正在尝试使用新的signalR客户端结果功能,该功能首次在。net 7预览4 https://devblogs.microsoft.com/dotnet/asp-net-core-updates-in-dotnet-7-preview-4/上公布,最近在。net 7中发布https://devblogs.microsoft.com/dotnet/announcing-asp-net-core-in-dotnet-7/。

因此,我正在将现有的signalR应用程序升级到。net 7。但我没有找到如何实现该功能的示例。如果你点击。net 7发布版的链接,它会引导你进入一个令人困惑的页面,没有关于该特性的任何信息。从预览4页有一个小的代码片段,但当我尝试使用它,我得到一个IHubCallerClients不包含一个定义为'单一'和没有可访问的扩展方法'单一'接受类型'IHubCallerClients的第一个参数可以找到(你错过了一个使用指令或汇编引用?)错误。

应用程序的服务器端目前正在使用Microsoft.AspNetCore.SignalR 1.1.0包,顺便说一下,该包被标记为已弃用。我没有找到任何关于这个包的替代方案的明确信息…

我做了一个简单的hub来测试预览4链接中的代码片段,同样使用Microsoft.AspNetCore.SignalR 1.1.0和。net 7,在那里我也得到了我提到的错误。

public class HubTest : Hub
{
public async override Task OnConnectedAsync()
{

}
public async override Task OnDisconnectedAsync(Exception exception)
{

}
public async Task WaitForResult(string connectionId)
{
var randomValue = Random.Shared.Next(0, 10);
var result = await Clients.Single(connectionId).InvokeAsync<int>(
"GetResult", "Guess the value between 0 and 10.");
if (result == randomValue)
{
await Clients.Client(connectionId).SendAsync("EndResult", "You guessed correctly!");
}
else
{
await Clients.Client(connectionId).SendAsync("EndResult", $"You guessed incorrectly, value was {randomValue}");
}
}
}

我错过了什么还是做错了什么?我应该引用另一个包吗?我还需要做什么或者设置什么才能使用这个功能?

我必须承认,由于缺乏有关该特性的文档,我有点不知所措。我搜索了很多关于它的信息,但没有找到任何真正有趣的东西。你们有关于这个话题的例子吗?

提前感谢。

我们将Single重命名回Client。文档已经更新以反映这一点。

最新更新