【问题标题】:Connect to Azure SignalR service from a .NET Core console app?从 .NET Core 控制台应用程序连接到 Azure SignalR 服务?
【发布时间】:2018-07-01 20:04:54
【问题描述】:

首先我会说我是 SignalR 的新手。我知道基本概念,但直到现在还没有亲自使用 SignalR 编写过应用程序。

稍加努力,我就可以在本地运行连接到 Azure SignalR 实例的基本 Azure SignalR ChatRoom 示例(只能从命令行使用“dotnet run”运行;如果从 Visual Studio 中启动,它会在我尝试时立即停止在 JS 提示窗口中更改名称)。

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

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

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

【问题讨论】:

  • 您是否找到了另一种从控制台应用程序直接连接到 Azure SignalR 的方法,或者您是否采用了 REST 路线?

标签: azure signalr


【解决方案1】:

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

更多关于 .NET Core 上 SignalR 的信息我们可以参考:Get started with SignalR on ASP.NET Core

我们可以在All Downloads of .NET Core下载.NET Core 2.1 SDK

类似的线程供您参考:

SignalR cannot be used with .Net Core

【讨论】:

  • 我安装了 .NET Core 2.1(dotnet --version 在我的 .csproj 文件中返回 2.1.201 和 <TargetFramework>netcoreapp2.0</TargetFramework>)。我已经有一个 ASP.NET Core Web 应用程序正在运行并与 Azure SignalR 通信。我正在寻找的指导是如何编写将数据推送到 Azure SignalR 集线器的 .NET Core 控制台应用程序(稍后可能是 Azure 函数),以便连接的 Web 客户端收到新消息(最终是 JSON 数据)的通知.
【解决方案2】:

在服务器上,您需要使用依赖注入获取集线器上下文并调用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

【讨论】:

  • 这个库是否适用于 .NET Core 控制台应用程序(不是 ASP.NET Core 应用程序)?我希望能够让一些外部进程(如控制台应用程序或 Azure 函数)将数据发送到 Azure SignalR 集线器,并将该消息发送到所有连接的 Web 客户端。目前可以吗?
  • 这必须是 ASP.NET Core 应用程序。如果您真的不想使用 ASP.NET Core(例如在 Azure 函数中),您可以使用服务提供的 REST API 将消息发送到集线器。示例可以在这里找到:github.com/aspnet/AzureSignalR-samples/tree/master/samples/…medium.com/@philippbauknecht/…
  • 感谢您提供的信息。我能够毫无问题地通过 REST API 执行基本调用,但在尝试向组发送消息时收到错误请求响应。 REST API 定义 (github.com/Azure/azure-signalr/blob/dev/docs/swagger.json) 说这应该像在 URL 中添加“/group/{groupName}”一样简单。
猜你喜欢
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-12
  • 1970-01-01
  • 2018-01-11
  • 1970-01-01
相关资源
最近更新 更多