在 Azure Functions 的 SignalR 服务中向一组用户发送消息
Send message to a group of users in SignalR Service in Azure Functions
查看 SignalR 绑定的 docs 以向指定用户发送消息,您在消息中包含 UserId
属性 -
[FunctionName("SendMessage")]
public static Task SendMessage(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
[SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
return signalRMessages.AddAsync(
new SignalRMessage
{
// the message will only be sent to these user IDs
UserId = "userId1",
Target = "newMessage",
Arguments = new [] { message }
});
}
此示例直接取自文档,但注释暗示您向 多个 用户标识发送消息,即使 属性 是字符串而不是数组。
您将如何指定多个用户? (例如,如果他们一起在私人聊天频道中)或者评论的措辞有误,您需要为每个用户发送一条消息吗?
对于其他版本的 SignalR,我会将它们放在一个组中,但函数不存在针对此的绑定。
不幸的是,正如文档所说,现在使用 Azure 函数绑定我们只能向一个用户或所有客户端发送消息。
参见 the code of current extension SDK Microsoft.Azure.WebJobs.Extensions.SignalRService
v1.0.0-preview1-10002。
它显示扩展只有 SendToAll 和 SendToUser 两种方法。
Task SendToAll(string hubName, SignalRData data);
Task SendToUser(string hubName, string userId, SignalRData data);
把你弄糊涂的评论其实是给old sample的,作者忘记修改了
好消息是支持群组操作under progress。
在 latest release 中引入了组操作。
现在您可以:
- 在
SignalRMessage
中使用 GroupName
向群组发送消息
- Add/remove 组中的用户使用
IAsyncCollector<SignalRGroupAction>
输出
查看 SignalR 绑定的 docs 以向指定用户发送消息,您在消息中包含 UserId
属性 -
[FunctionName("SendMessage")]
public static Task SendMessage(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")]object message,
[SignalR(HubName = "chat")]IAsyncCollector<SignalRMessage> signalRMessages)
{
return signalRMessages.AddAsync(
new SignalRMessage
{
// the message will only be sent to these user IDs
UserId = "userId1",
Target = "newMessage",
Arguments = new [] { message }
});
}
此示例直接取自文档,但注释暗示您向 多个 用户标识发送消息,即使 属性 是字符串而不是数组。
您将如何指定多个用户? (例如,如果他们一起在私人聊天频道中)或者评论的措辞有误,您需要为每个用户发送一条消息吗?
对于其他版本的 SignalR,我会将它们放在一个组中,但函数不存在针对此的绑定。
不幸的是,正如文档所说,现在使用 Azure 函数绑定我们只能向一个用户或所有客户端发送消息。
参见 the code of current extension SDK Microsoft.Azure.WebJobs.Extensions.SignalRService
v1.0.0-preview1-10002。
它显示扩展只有 SendToAll 和 SendToUser 两种方法。
Task SendToAll(string hubName, SignalRData data);
Task SendToUser(string hubName, string userId, SignalRData data);
把你弄糊涂的评论其实是给old sample的,作者忘记修改了
好消息是支持群组操作under progress。
在 latest release 中引入了组操作。
现在您可以:
- 在
SignalRMessage
中使用 - Add/remove 组中的用户使用
IAsyncCollector<SignalRGroupAction>
输出
GroupName
向群组发送消息