gpt4 book ai didi

c# - 无法连接到 Azure SignalR Hub

转载 作者:行者123 更新时间:2023-12-03 00:42:04 25 4
gpt4 key购买 nike

我正在尝试将实时消息发布到 Azure SignalR Hub。但我无法连接到我的 Azure SignalR Hub 本身。我尝试了各种解决方案。它没有按预期工作。你能在这里帮助我吗?此版本的 SignalR 客户端没有文档。

public static async Task BroadcastMessageAsync()
{
var signalrUrl = "https://myazuresignalr.service.signalr.net";
var hubConnection = new HubConnection(signalrUrl);
hubConnection.Credentials = CredentialCache.DefaultNetworkCredentials;
hubConnection.Closed += async () =>
{
await hubConnection.Start();
};

var hubProxy = hubConnection.CreateHubProxy("chat");

hubProxy.On<string, string>("ReceiveMessage", (user, message) =>
{
Console.WriteLine(user + " | " + message);
});

try
{
await hubConnection.Start();
Console.WriteLine("Connection started");
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}

await hubProxy.Invoke("SendMessage", "user", "message").ConfigureAwait(false);
}

最佳答案

毕竟,来自 Microsoft.AspNetCore.SignalR.Client 的 HubConnection 旨在连接到由中间件(如 Asp.Net Web App\Api)管理的 SignalR Hub。它无意连接到直接的 Azure SignalR 服务端点。

错误:

var signalrUrl = "https://myazuresignalr.service.signalr.net";

正确:对于聊天客户端

var signalrUrl = "https://myazuresignalr.service.signalr.net/client/?hub=yourHubName";

正确:对于聊天服务器

var signalrUrl = "https://myazuresignalr.service.signalr.net/api/v1/hubs/yourHubName

现在,我可以使用其访问 key 从 Asp.Net Web 应用程序连接到 Azure SignalR 服务。 Asp.Net Web App 通过 Azure SignalR 服务创建并托管中心。我从 C# 控制台应用程序连接到 Asp.Net 应用程序以与 Azure SignalR 服务对话。

Azure SignalR 服务表面上没有明确的文档来声明客户端库正在使用 SignalR 的 REST API 版本。

希望它可以帮助和帮助别人!

总结

  1. 我是否应该始终实现像 Asp.Net Web 应用程序这样的中间件并依赖它来创建 Hub 并进行通信?是否无法从 C# 控制台直接与 Azure SignalR 服务对话以创建集线器并通过集线器发送消息?

    [OP]:不,并不总是如此。除了我上面写的之外,还有另一种解决方案。这个tutorial帮助我通过 REST API 直接与 Azure SignalR 服务对话。

- 更新-

  1. 使用任何服务器端语言(我选择了 Asp.Net Web API)为 Azure Signal Service 创建中央集线器。最佳实践是让 Web API 之类的中间人在发布到 Azure SignalR 服务之前对客户端请求进行授权。此外,还可以屏蔽客户端的 Azure SignalR 连接字符串。

  2. 通过 HubConnectionBuilder 库使用 JS、TS、.Net Console 等任何客户端语言创建客户端应用程序(大多数情况下)。

  3. 通过 Azure SignalR 连接字符串创建消息广播应用程序,以通过 Azure SignalR 服务发送信号。

  4. 服务器可以通过集线器发布任何新的信号事件,而客户端可以监听这些动态事件,前提是客户端订阅了这些动态事件。

  5. 当 Web API 实现该事件时,客户端也只能通过 Web API Central Hub 发布信号。

关于c# - 无法连接到 Azure SignalR Hub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55493434/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com