【问题标题】:How to use SignalR to send data to a specific user in C#?如何使用 SignalR 向 C# 中的特定用户发送数据?
【发布时间】:2020-06-13 14:57:49
【问题描述】:

我有一个通过 SignalR 接收消息的客户端。它工作正常,但更像是广播。我希望能够向特定客户端发送消息。 是否可以使用 Azure 函数 C# 来做到这一点?这是我的协商函数示例。

  [FunctionName("Negotiate")]
    public static SignalRConnectionInfo NegotiateSignalR(
      [HttpTrigger(AuthorizationLevel.Anonymous, "post")] HttpRequest req,
      [SignalRConnectionInfo(HubName = "notifications")] SignalRConnectionInfo connectionInfo)
    {
        return connectionInfo;
    }

【问题讨论】:

    标签: c# azure signalr azure-functions azure-signalr


    【解决方案1】:

    你可以这样做。

    [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 }
            });
    }
    

    参考:

    Send to a user

    【讨论】:

      【解决方案2】:
       [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 Binding 中再添加一个属性 UserId,并且 FE 客户端必须在标头中传递用户 ID。

      x-ms-signalr-userid:{userid}

      通过此更改,通过客户端和信号器创建的连接与用户 ID 相关联,您可以将消息发送给特定用户。

      【讨论】:

        猜你喜欢
        • 2020-02-26
        • 2015-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多