【问题标题】:How to send Parameter/Query in HubConnection SignalR Core 2.1如何在 HubConnection SignalR Core 2.1 中发送参数/查询
【发布时间】:2020-04-16 16:06:31
【问题描述】:

我正在尝试将参数发送到signalr的连接

Connection = new HubConnectionBuilder()
                .WithUrl("https://familyapp.azurewebsites.net/StoreHub?token=123")
                .Build();

            await Connection.StartAsync();

在我的服务器端,我从 HttpContext 获取这个参数:

 public override async Task OnConnectedAsync()
        {
            var group = Context.GetHttpContext().Request.Query["token"];

            string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";

            await Groups.AddToGroupAsync(Context.ConnectionId, value);
            await base.OnConnectedAsync();              
        }

GetHttpContext ().Request.Query["token"] 为空,因为组名接收“默认”,如以下代码所示

string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";

我忘了一步吗? 我正在使用 aspnetcore 2.1

【问题讨论】:

    标签: asp.net-core signalr asp.net-core-2.1 signalr-hub


    【解决方案1】:

    根据您的代码,我认为您使用的是 ASP.NET Core SignalR .NET 客户端库。这是一个基于您的代码在控制台应用程序中使用 .net 客户端的工作演示。

    控制台应用

    1.从Manage NuGet Package

    安装3.1.3版的客户端库Microsoft.AspNetCore.SignalR.Client

    2.连接到集线器

    var connection = new HubConnectionBuilder()
                .WithUrl("http://localhost:5000/chatHub?token=123")
                .Build();
    
    await connection.StartAsync();
    

    SignalR 集线器端

    您可以参考this article 来设置您的 SignalR 集线器。

    1.设置 SignalR 路由

    app.UseSignalR(routes =>
     {
        routes.MapHub<ChatHub>("/chatHub");
     });
    

    2.Hub类:

    public class ChatHub:Hub
    {
        public async Task SendMessage(string user, string message)
        {
            await Clients.All.SendAsync("ReceiveMessage", user, message);
        }
    
        public override async Task OnConnectedAsync()
        {
            var group = Context.GetHttpContext().Request.Query["token"];
    
            string value = !string.IsNullOrEmpty(group.ToString()) ? group.ToString() : "default";
    
            await Groups.AddToGroupAsync(Context.ConnectionId, value);
            await base.OnConnectedAsync();
        }
    }
    

    这是我的demo link,你可以参考。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多