Azure SignalR Сервис | Asp.Net Web Api | Консольный клиент - PullRequest
1 голос
/ 04 апреля 2019

Я могу подключиться к службе Azure SignalR из веб-приложения Asp.Net, используя его ключ доступа. Asp.Net Web App создает и размещает концентратор через службу Azure SignalR. Я создал консольный клиент c # и подключился к SignalR Hub веб-приложения Asp.Net с помощью библиотеки Microsoft.AspNetCore.SignalR.Client.

Вопросы:

  1. Должен ли я всегда реализовывать промежуточное программное обеспечение, такое как веб-приложение Asp.Net, и полагаться на него для создания и общения через Hub? Да, исходя из Самары и других источников, у нас есть пара вариантов.

    • Использование REST API из консольного приложения для размещения концентратора ( Azure SignalR ) в качестве сервера и обслуживания клиентов \ подписчиков в качестве портала. Это поддерживает однонаправленный обмен сообщениями.
    • Использование REST API из функций Azure ( делает его безсерверным ) для размещения концентратора ( Azure SignalR ) в качестве сервера и обслуживания клиентов \ подписчиков в качестве портала. Это поддерживает однонаправленный обмен сообщениями.
    • Разместите концентратор ( Azure SignalR ) из управляемого веб-API Asp.Net со слоем auth () и обслуживайте клиентов через API. Это поддерживает полностью развернутый двунаправленный обмен сообщениями.
  2. Разве нельзя напрямую общаться со службой Azure SignalR из консоли c # для создания концентратора и отправки моих сообщений через концентратор?

    • Использование REST API из консольного приложения для размещения концентратора ( Azure SignalR ) в качестве сервера и обслуживания клиентов \ подписчиков в качестве портала. Это поддерживает однонаправленный обмен сообщениями.
    • Использование REST API из функций Azure ( делает его безсерверным ) для размещения концентратора ( Azure SignalR ) в качестве сервера и обслуживания клиентов \ подписчиков в качестве портала. Это поддерживает однонаправленные сообщения.

Я новичок в службе Azure SignalR; Пожалуйста, помогите мне по вышеуказанным вопросам. Мои вопросы почти отвечены. Надеюсь, это поможет!

P.S. Люди не имеют реальных ответов, держись подальше

1 Ответ

1 голос
/ 08 апреля 2019

Я думаю, что понимаю ваш вопрос немного лучше. Я думаю, что вы говорите о примере кода здесь? https://github.com/aspnet/AzureSignalR-samples/tree/master/samples/Serverless

Если вы хотите создать приложение для чата, вы должны изменить код, чтобы объединить две функции. Я смог сделать это, обновив program.cs для запуска обоих кодовых наборов. Это не полный клиент чата - все сообщения все еще говорят, что они получены от другого пользователя, но я надеюсь, что это даст вам лучшее представление о том, как это работает.

    app.Command("client", cmd =>
    {
        cmd.Description = "Start a client to listen to the service";
        cmd.HelpOption("--help");

        var userId = cmd.Argument("<userId>", "Set User ID");

        cmd.OnExecute(async () =>
        {
            var connectionString = connectionStringOption.Value() ?? configuration["Azure:SignalR:ConnectionString"];

            if (string.IsNullOrEmpty(connectionString) || !hubOption.HasValue())
            {
                MissOptions();
                return 0;
            }

            var client = new ClientHandler(connectionString, hubOption.Value(), userId.Value);

            await client.StartAsync();

//Add the server to the client so we can talk both ways
            var server = new ServerHandler(connectionString, hubOption.Value());
            await server.Start();


            Console.ReadLine();
            await client.DisposeAsync();

            return 0;
        });
    });

Есть что-то, что нужно иметь в виду, и почему в большинстве этих примеров добавлен уровень API поверх сервиса SignalR. Чтобы создать соединение с услугой, вы используете ключ. Если вы встраиваете это в консольное приложение, а затем распределяете его, любой, у кого есть приложение, теперь может контролировать все ваши концентраторы, извлекая ключ . Если вы не доверяете всем своим пользователям эту мощь, то добавление уровня API - это путь, по которому пользователь проходит аутентификацию в API, и API решает, какие разрешения они имеют в концентраторе.

...