gpt4 book ai didi

c# - 使用 Azure SignalR 服务和 Azure Functions 进行本地开发

转载 作者:行者123 更新时间:2023-12-02 05:59:08 25 4
gpt4 key购买 nike

我正在使用在云中运行的 Azure SignalR 服务,并运行一个 Azure Function App,该应用程序在本地主机上的笔记本电脑上本地运行。我有以下中心:

public class LeaderboardHub : ServerlessHub
{
[FunctionName("negotiate")]
public async Task<SignalRConnectionInfo> Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequest req) =>
Negotiate(req.Headers["x-ms-signalr-user-id"]);

[FunctionName(nameof(OnConnected))]
public async Task OnConnected([SignalRTrigger]InvocationContext invocationContext, ILogger logger)
{
logger.LogInformation($"{invocationContext.ConnectionId} has connected");
}
}

我像这样连接到我的集线器:

 const apiBaseUrl = window.location.origin;
const connection = new signalR.HubConnectionBuilder()
.withUrl(apiBaseUrl + '/api')
.configureLogging(signalR.LogLevel.Information)
.build();

connection.start()
.catch(console.error);

当我运行它时,我可以在 Negotiate() 设置断点并查看所建立的连接。当我向我的中心发送消息时,它们会显示在客户端上。但是,我从未见过 OnConnected 方法被调用。同样,如果我创建新的 SignalRTrigger 方法并在 Javascript 中调用它们,它们永远不会被调用。

我的理论:我希望我错了,但我有点猜测这是因为我在本地主机下的自己的笔记本电脑上运行我的应用程序,而 Azure SignalR 服务没有由于 Azure 无法连接到我的笔记本电脑,因此可以将消息“转发”给我。我还没有尝试将我的函数应用程序部署到 Azure 并在那里运行它,但我猜测如果我在 Azure 中运行它,将会有双向连接。

  1. 这是一个正确的假设吗?也就是说,这是 Azure SignalR 服务的限制吗?
  2. 有什么办法可以解决这个问题吗?例如,运行一些本地 AzureR SignalR 代理服务或模拟器?人们通常如何使用 SignalR 进行开发而不将每一个小更改都部署到 Azure?

谢谢!

最佳答案

解决了我自己的问题!首先,我是对的。其次,有一个非常酷的 SignalR 本地模拟器,可以在这里找到:

https://github.com/Azure/azure-signalr/blob/dev/docs/emulator.md

安装并运行后,我的代码按预期完美运行。

关于c# - 使用 Azure SignalR 服务和 Azure Functions 进行本地开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73982004/

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