如何使用 SignalR 向 C# 中的特定用户发送数据?
How to use SignalR to send data to a specific user in C#?
我有一个通过 SignalR 接收消息的客户端。它工作正常,但更像是广播。我希望能够向特定客户端发送消息。
是否可以使用 Azure 函数 C# 来做到这一点?这是我的协商功能示例。
[FunctionName("Negotiate")]
public static SignalRConnectionInfo NegotiateSignalR(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
[SignalRConnectionInfo(HubName = "notifications")] SignalRConnectionInfo connectionInfo)
{
return connectionInfo;
}
你可以这样做。
[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 this user ID
UserId = "userId1",
Target = "newMessage",
Arguments = new [] { message }
});
}
参考:
[FunctionName("Negotiate")]
public static SignalRConnectionInfo NegotiateSignalR(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[SignalRConnectionInfo(HubName = "notifications", UserId = "{headers.x-ms-signalr-userid}")] SignalRConnectionInfo connectionInfo)
{
return connectionInfo;
}
我必须在 SignalRConnectionInfo 绑定中再添加一个 属性 UserId,并且 FE 客户端必须在 headers.
中传递用户 ID
x-ms-signalr-userid:{userid}
通过此更改,创建的连接 b/w 客户端和信号器与用户 ID 相关联,您可以向特定用户发送消息。
我有一个通过 SignalR 接收消息的客户端。它工作正常,但更像是广播。我希望能够向特定客户端发送消息。 是否可以使用 Azure 函数 C# 来做到这一点?这是我的协商功能示例。
[FunctionName("Negotiate")]
public static SignalRConnectionInfo NegotiateSignalR(
[HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
[SignalRConnectionInfo(HubName = "notifications")] SignalRConnectionInfo connectionInfo)
{
return connectionInfo;
}
你可以这样做。
[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 this user ID
UserId = "userId1",
Target = "newMessage",
Arguments = new [] { message }
});
}
参考:
[FunctionName("Negotiate")]
public static SignalRConnectionInfo NegotiateSignalR(
[HttpTrigger(AuthorizationLevel.Function, "post")] HttpRequest req,
[SignalRConnectionInfo(HubName = "notifications", UserId = "{headers.x-ms-signalr-userid}")] SignalRConnectionInfo connectionInfo)
{
return connectionInfo;
}
我必须在 SignalRConnectionInfo 绑定中再添加一个 属性 UserId,并且 FE 客户端必须在 headers.
中传递用户 IDx-ms-signalr-userid:{userid}
通过此更改,创建的连接 b/w 客户端和信号器与用户 ID 相关联,您可以向特定用户发送消息。