首页 > 解决方案 > SignalR .NET 框架与 SignalR .NET Core 功能

问题描述

此示例来自 SignalR .NET Core 上有关“创建和使用集线器”的 Microsoft 文档:

using Microsoft.AspNetCore.SignalR;
using System.Threading.Tasks;

namespace SignalRChat.Hubs
{
    public class ChatHub : Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
    }
}

此示例来自 SignalR .NET Framework 上有关“创建和使用集线器”的 Microsoft 文档:

using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
    public class ChatHub : Hub
    {
        public void Send(string name, string message)
        {
            // Call the broadcastMessage method to update clients.
            Clients.All.broadcastMessage(name, message);
        }
    }
}

我是否正确假设 SignalR .NET Framework 不支持来自客户端调用的 returnig 任务,而 SignalR .NET Core 具有此功能?是否仅在 .NET Core 中我们可以等待对客户端的调用以确保收到消息?

标签: c#.netsignalr

解决方案


如果您覆盖基本集线器方法,您可以看到它们返回 a Task,因此您可以使其他方法也返回 Task 并制作它们async

public override Task OnConnected()
{
    return base.OnConnected();
}

public override Task OnDisconnected(bool stopCalled)
{
    return base.OnDisconnected(stopCalled);
}

public override Task OnReconnected()
{
    return base.OnReconnected();
}

推荐阅读