Как отправить параметр / запрос в HubConnection SignalR Core 2.1 - PullRequest
1 голос
/ 15 апреля 2020

Я пытаюсь отправить параметры в соединение на 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"] - это null, потому что имя группы получает «default», как указано в следующем коде

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

Я забыл шаг? Я использую aspnetcore 2.1

1 Ответ

0 голосов
/ 16 апреля 2020

Я думаю, что из вашего кода вы используете ASP. NET Core SignalR. NET клиентская библиотека. Вот рабочая демо-версия, использующая net клиента в консольном приложении на основе вашего кода.

Консольное приложение

1.Установите клиентскую библиотеку Microsoft.AspNetCore.SignalR.Client с версией 3.1.3 из Управление пакетом NuGet

2.connect на концентратор

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

await connection.StartAsync();

Сторона концентратора SignalR

Вы можете обратиться к этой статье , чтобы настроить концентратор SignalR.

1.Настройка маршрутов SignalR

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

2. Класс хаба:

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

Вот моя демонстрационная ссылка , на которую можно сослаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...