我正在构建一个基于无服务器架构的应用程序。我卡住的部分包括:SPA Web UI、C# .Net 5.0 隔离进程功能(dotnet-isolated)、Azure SignalR 服务(无服务器模式)。
有很多文档和示例如何使用我提到的相同堆栈构建不同的实时无服务器应用程序,但使用 .Net 3.1 函数。几乎没有关于 SignalR 触发的 .Net 5.0 隔离进程函数的 SignalR 输出绑定的信息。
唯一有用的文档如下: C# 隔离进程:https : //docs.microsoft.com/en-us/azure/azure-functions/dotnet-isolated-process-guide SignalR 扩展:https://github。 com/Azure/azure-functions-dotnet-worker/tree/main/samples/Extensions/SignalR
因此,那里涵盖了基础知识。但是,没有关于一些高级 SignalR 输出绑定的信息,这将有助于构建更多功能,例如:将用户添加到组,从组中删除用户。等等。
到目前为止,我能够构建和运行:Negotiate、SendMessage (to all、user or group)、Connected、Disconnected
但我正在努力解决 AddToGroup 部分......这是我的代码:
[Function(nameof(AddToGroup))]
[SignalROutput(HubName = "WebUINotifications", ConnectionStringSetting = "AzureSignalRConnectionString")]
public static OutputObject AddToGroup(
[SignalRTrigger("WebUINotifications", "messages", "AddToGroup")] string item,
FunctionContext context)
{
var logger = context.GetLogger("AddToGroup");
var signalrGroup = JsonSerializer.Deserialize<SignalRGroup>(item);
var userId = signalrGroup.UserId;
var groupName = signalrGroup.Arguments[0];
logger.LogInformation($"UserId: {userId}");
logger.LogInformation($"Group Name: {groupName}");
return new OutputObject()
{
UserId = userId,
GroupName = groupName,
};
}
在 Azure 中为 SignalR 服务配置 UpStream 设置后,我的函数被 Web UI 中的 javascript 成功触发
this.connection.invoke('AddToGroup', 'TestGroup');
但是我得到了错误,这并不奇怪,因为不清楚如何精确绑定:
System.Private.CoreLib: Exception while executing function: Functions.AddToGroup. Microsoft.Azure.WebJobs.Extensions.SignalRService: Unable to convert JObject to valid output binding type, check parameters.
我错过了什么?在哪里可以找到文档?
多谢你们!