#azure #azure-functions #azure-signalr
Вопрос:
Могу ли я использовать аргумент привязки вывода в foreach несколько раз?
[FunctionName("OnClientConnectedDisconnected")]
public async Task Run(
[EventGridTrigger] EventGridEvent eventGridEvent,
[SignalR(HubName = "Lobby")] IAsyncCollector<SignalRMessage> signalRMessage,
[SignalR(HubName = "Lobby")] IAsyncCollector<SignalRGroupAction> signalRGroupMessage,
ILogger log)
{
...
...
foreach (var player in onlineFriends)
{
await signalRGroupMessage.AddAsync(
new SignalRGroupAction
{
GroupName = $"Group_{player}",
Action = GroupAction.Add,
UserId = eventGridData.UserId
}
);
}
}
Ответ №1:
Возможность многократного вызова выходной привязки в функции зависит от типа привязки и способа ее записи. Например, привязка вывода хранилища таблиц добавит в таблицу несколько объектов (по одному для каждого вызова), но привязка очереди отправит только одно сообщение. Я не вижу, чтобы привязка вывода SignalR допускала несколько вызовов.
Помните, что привязка необязательна-альтернативной стратегией было бы написать свой собственный код, чтобы создать свою группу и выйти из функции после цикла.
Комментарии:
1. Как вы узнаете, поддерживают ли эти привязки несколько вызовов или нет?
2. Если функция завершается после первого вызова выходной привязки, то она предназначена для вызова только один раз.
3. Я ищу реализацию метода SignalRAsyncCollector<T>.addAsync ()<T> и не могу понять, как он может избежать следующих вызовов?
Ответ №2:
Да, ты можешь.
В C# вы можете использовать привязку вывода SignalR несколько раз, и вызов просто происходит там, где вы вызываете await signalRGroupMessage.AddAsync()