从.NET Core控制台应用程序连接到Azure SignalR服务吗?

时间:2018-07-01 20:04:54

标签: azure signalr

首先,我要说我是SignalR的新手。我知道基本概念,但是到目前为止,从未亲自使用SignalR编写过应用。

不费吹灰之力,我就有了在本地运行的基本Azure SignalR ChatRoom示例,该示例连接到Azure SignalR实例(只能从命令行使用“ dotnet run”运行;如果从Visual Studio中启动,则在我尝试时会立即停止在JS提示窗口中更改名称)。

我现在想做的是从.NET Core控制台应用程序发送消息(无需接收),并将其显示在浏览器所连接的聊天室实例中。这是为了模拟后台进程执行的一些工作,然后将消息发送到Azure SignalR集线器,以通知所有客户端结果。

我创建了一个新的.NET Core应用,当我尝试添加Microsoft.Azure.SignalR程序包时,收到一条错误消息,指出“ 错误:程序包'Microsoft.Azure.SignalR'与'all不兼容。 '项目'C:... \ TestingAzureSignalR \ ChatRoom.Console \ ChatRoom.Console.csproj'中的框架。

在任何地方都有可以帮助我的例子吗?像使用ChatRoom Quickstart示例一样简单吗?

2 个答案:

答案 0 :(得分:0)

如果您使用的.NET Core版本低于2.1,请将其更新为2.1,因为SignalR是在.NET Core 2.1上发布的。

有关.NET Core上SignalR的更多信息,请参考:Get started with SignalR on ASP.NET Core

我们可以通过以下网址下载.NET Core 2.1 SDK:All Downloads of .NET Core

类似的线程供您参考:

SignalR cannot be used with .Net Core

答案 1 :(得分:0)

在服务器上,您需要使用依赖项注入获取中心上下文,并调用SendAsync方法发送给客户端。例如:

public class Sender
{
    public Sender(IHubContext<MyHub> context)
    {
        context.Clients.All.SendAsync(...);
    }
}

可以在这里找到一个示例: https://github.com/aspnet/AzureSignalR-samples/tree/master/samples/FlightMap,它使用计时器向客户端广播数据。

对于遇到的“不兼容框架”错误,将Microsoft.Azure.SignalR添加到项目中时需要指定版本号,因为此软件包仍是预发行版:

dotnet add package Microsoft.Azure.SignalR --version 1.0.0-preview1-10011