我正在使用 dotnet 7 isolated 函数
我安装了包 Microsoft.Azure.Functions.Worker.Extensions.SignalRService
在本地开发时,似乎调用了negiotate函数。
但是,我无法让我的网络客户端(角度)调用任何服务器端(SignalRTrigger属性)函数。
public HostApi(SignalRService signalRService)
{
_signalRService = signalRService;
}
[Function("Negotiate")]
public SignalRConnectionInfo Negotiate([HttpTrigger(AuthorizationLevel.Anonymous)] HttpRequestData req,
[SignalRConnectionInfoInput(HubName = "Hub", UserId = "{query.userid}")] SignalRConnectionInfo signalRConnectionInfo)
{
_logger.LogInformation("Executing negotiation.");
return signalRConnectionInfo;
}
[Function("OnConnected")]
[SignalROutput(HubName = "Hub")]
public SignalRMessageAction OnConnected([SignalRTrigger("Hub", "connections", "connected")] SignalRInvocationContext invocationContext)
{
invocationContext.Headers.TryGetValue("Authorization", out var auth);
_logger.LogInformation($"{invocationContext.ConnectionId} has connected");
return new SignalRMessageAction("newConnection")
{
Arguments = new object[] { new NewConnection(invocationContext.ConnectionId, auth) },
};
}
}
关于如何解决这个问题有什么想法吗?
找到解决方案了!! 您需要使用signalr模拟器!!
执行命令:
dotnet tool install -g Microsoft.Azure.SignalR.Emulator --version 1.1.0
asrs-emulator upstream init
asrs-emulator start
运行这些命令应显示连接字符串。然后您需要复制 local.settings.json 文件中的值。喜欢这个:
"AzureSignalRConnectionString": "Endpoint=http://localhost;Port=8888;AccessKey=ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789ABCDEFGH;Version=1.0;",