Краткое руководство. Широковещательные сообщения в режиме реального времени из консольного приложения

Служба Azure SignalR предоставляет REST API для поддержки сценариев обмена данными между клиентами, таких как трансляция. Вы можете выбрать любой язык программирования, который может выполнять вызовы REST API. Вы можете отправлять сообщения всем подключенным клиентам, конкретному клиенту по имени или группе клиентов.

Из этого краткого руководства вы узнаете, как отправлять сообщения из приложения командной строки в подключенные клиентские приложения в C#.

Необходимые компоненты

Это краткое руководство предназначено для macOS, Windows или Linux.

Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Вход в Azure

Войдите на портал Azure с помощью учетной записи Azure.

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

В этом разделе описано, как создать базовый экземпляр Azure SignalR, используемый для приложения. Следующие действия используют портал Azure для создания нового экземпляра, но также можно использовать Azure CLI. Дополнительные сведения см. в статье az signalr create command in the Служба Azure SignalR CLI Reference.

  1. Войдите на портал Azure.
  2. Щелкните + Создать ресурс в левом верхнем углу страницы.
  3. На странице "Создание ресурса" в текстовом поле служба и Marketplace введите сигнализатор и выберите Служба SignalR из списка.
  4. На странице Служба SignalR нажмите кнопку "Создать".
  5. На вкладке "Основные сведения" введите необходимые сведения для нового экземпляра Служба SignalR. Введите следующие значения:
Поле Рекомендуемое значение Description
Подписка Выберите свою подписку Выберите подписку, которую вы хотите использовать для создания нового экземпляра Служба SignalR.
Группа ресурсов Создайте группу ресурсов с именем SignalRTestResources Выберите или создайте группу ресурсов для ресурса SignalR. Для этого руководства рекомендуется создать новую группу ресурсов вместо использования существующей группы ресурсов. Чтобы освободить ресурсы после завершения работы с руководством, удалите группу ресурсов.

При удалении группы ресурсов также удаляются все ресурсы, принадлежащие группе. Это действие невозможно отменить. Перед удалением группы ресурсов убедитесь, что она не содержит ресурсов, которые вы хотите сохранить.

Дополнительные сведения см. в статье Управление ресурсами Azure через портал.
Имя ресурса testsignalr Введите уникальное имя для ресурса SignalR. Если testsignalr уже взят в регионе, добавьте цифру или символ, пока имя не будет уникальным.

Имя должно быть строкой длиной от 1 до 63 символов и содержать только цифры, буквы и символ -. Имя не может начинаться или заканчиваться символом дефиса, а последовательные символы дефиса недопустимы.
Регион Выберите регион Выберите соответствующий регион для нового экземпляра Служба SignalR.

Служба Azure SignalR сейчас недоступен во всех регионах. Дополнительные сведения см. в разделе Служба Azure SignalR доступности региона
Ценовая категория Выберите "Изменить", а затем выберите "Только для разработки и тестирования". Выберите "Выбрать ", чтобы подтвердить выбор ценовой категории. Служба Azure SignalR имеет три ценовых категории: "Бесплатный", "Стандартный" и "Премиум". Учебники используют уровень "Бесплатный " , если не указано иное в предварительных требованиях.

Дополнительные сведения о различиях функций между уровнями и ценами см. в Служба Azure SignalR ценах
Режим службы Выбор соответствующего режима службы Используйте Значение по умолчанию при размещении логики Концентратора SignalR в веб-приложениях и использовании службы SignalR в качестве прокси-сервера. Используйте бессерверные технологии, такие как Функции Azure для размещения логики концентратора SignalR.

Классический режим предназначен только для обратной совместимости и не рекомендуется использовать.

Дополнительные сведения см. в разделе "Режим службы" в Служба Azure SignalR.

Вам не нужно изменять параметры на вкладках "Сеть и теги " для учебников SignalR.

  1. Нажмите кнопку "Просмотр и создание " в нижней части вкладки "Основные сведения".
  2. На вкладке "Просмотр и создание" просмотрите значения и нажмите кнопку "Создать". Для завершения развертывания потребуется несколько минут.
  3. По завершении развертывания нажмите кнопку "Перейти к ресурсу ".
  4. На странице ресурсов SignalR выберите "Ключи" в меню слева в разделе Параметры.
  5. Скопируйте строку Подключение ion для первичного ключа. Это строка подключения вам потребуется, чтобы настроить приложение позже в этом руководстве.

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Клонирование примера приложения

Пока служба развертывается, давайте переключимся на подготовку кода. Клонируйте пример приложения из GitHub, задайте строку подключения службы SignalR и запустите приложение в локальной среде.

  1. Откройте окно терминала Git. Перейдите в папку, в которую вы хотите клонировать пример проекта.

  2. Выполните команду ниже, чтобы клонировать репозиторий с примером. Эта команда создает копию примера приложения на локальном компьютере.

    git clone https://github.com/aspnet/AzureSignalR-samples.git
    

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Сборка и запуск примера

Этот пример представляет собой консольное приложение, показывающее использование службы Azure SignalR. Он предоставляет два режима.

  • Режим сервера — используйте простые команды для вызова REST API службы Azure SignalR.
  • Режим клиента — подключитесь к службе Azure SignalR и получайте сообщения с сервера.

Вы также узнаете, как создать маркер доступа для проверки подлинности с помощью Служба Azure SignalR.

Сборка исполняемого файла

В качестве примера мы используем macOS osx.10.13-x64. Можно найти рекомендации по сборке на других платформах.

cd AzureSignalR-samples/samples/Serverless/

dotnet publish -c Release -r osx.10.13-x64

Запуск клиента

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless client <ClientName> -c "<ConnectionString>" -h <HubName>

Запуск сервера

cd bin/Release/netcoreapp2.1/osx.10.13-x64/

Serverless server -c "<ConnectionString>" -h <HubName>

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Запуск примера без публикации

Вы также можете запустить следующую команду, чтобы запустить сервер или клиент.

# Start a server
dotnet run -- server -c "<ConnectionString>" -h <HubName>

# Start a client
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>

Использование функции user-secrets для указания строки подключения

Вы можете выполнить dotnet user-secrets set Azure:SignalR:ConnectionString "<ConnectionString>" в корневом каталоге примера. После этого вам больше не нужен параметр -c "<ConnectionString>".

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Использование

После запуска сервера используйте такую команду для отправки сообщения.

send user <User Id>
send users <User List>
send group <Group Name>
send groups <Group List>
broadcast

Можно запустить несколько клиентов с разными именами.

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Интеграция с не службы Майкрософт

Служба Azure SignalR позволяет не службы Майкрософт интегрироваться с системой.

Определение технических спецификаций

В следующей таблице показаны все версии поддерживаемых REST API. Также можно найти файл с определением для каждой версии.

Версия Состояние API Door Определенный
1.0-preview На месте 5002 Swagger
1.0 На месте Стандартные Swagger

В следующе таблице показан список доступных API для каждой версии.

API 1.0-preview 1.0
Отправка всем
Отправка группе
Широковещательная передача для некоторых групп (не рекомендуется) N / A
Отправка пользователю
Отправка некоторым пользователям (не рекомендуется) N / A
Добавление пользователя в группу N / A
Удаление пользователя из группы N / A
Проверка существования пользователя N / A
Удаление пользователя из всех групп N / A
Отправка сообщения в ответ на подключение N / A
Добавление подключения в группу N / A
Удаление подключения из группы N / A
Закрытие подключения клиента N / A
Работоспособность служб N / A

Широковещательная передача для всех

Версия Метод HTTP для API Запросить URL-адрес Текст запроса
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name> {"target": "<method-name>", "arguments": [...]}

Отправка группе

Версия Метод HTTP для API Запросить URL-адрес Текст запроса
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/group/<group-name> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name> {"target": "<method-name>", "arguments": [...]}

Отправка пользователю

Версия Метод HTTP для API Запросить URL-адрес Текст запроса
1.0-preview POST https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/user/<user-id> {"target": "<method-name>", "arguments": [...]}
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id> {"target": "<method-name>", "arguments": [...]}

Добавление пользователя в группу

Версия Метод HTTP для API Запросить URL-адрес
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>

Удаление пользователя из группы

Версия Метод HTTP для API Запросить URL-адрес
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>

Проверка существования пользователя в группе

Версия API Метод HTTP для API Запросить URL-адрес
1.0 GET https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups/<group-name>
1.0 GET https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id>
Код состояния отклика Description
200 Пользователь существует
404 Пользователь не существует

Удаление пользователя из всех групп

Версия API Метод HTTP для API Запросить URL-адрес
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups

Отправка сообщения в ответ на подключение

Версия API Метод HTTP для API Запросить URL-адрес Текст запроса
1.0 POST https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id> { "target":"<method-name>", "arguments":[ ... ] }

Добавление подключения в группу

Версия API Метод HTTP для API Запросить URL-адрес
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0 PUT https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>

Удаление подключения из группы

Версия API Метод HTTP для API Запросить URL-адрес
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id>
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name>

Закрытие подключения клиента

Версия API Метод HTTP для API Запросить URL-адрес
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>
1.0 DELETE https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>?reason=<close-reason>

Работоспособность службы

Версия API Метод HTTP для API Запросить URL-адрес
1.0 GET https://<instance-name>.service.signalr.net/api/v1/health
Код состояния отклика Description
200 Служба работает
5xx Ошибка службы

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Очистка ресурсов

Если вы не собираетесь использовать это приложение дальше, удалите все ресурсы, созданные в ходе работы с этим кратким руководством, чтобы не оплачивать их.

  1. На портале Azure выберите Группа ресурсов слева, а затем созданную группу ресурсов. Также можно использовать поле поиска для поиска ресурса по его имени.

  2. В открывшемся окне выберите группу ресурсов и щелкните Удалить группу ресурсов.

  3. В новом окне введите имя группы ресурсов, которую требуется удалить, и щелкните Удалить.

Возникли проблемы? См. руководство по устранению неполадок или сообщите о проблеме нам.

Следующие шаги

В этом кратком руководстве вы узнали, как использовать REST API для трансляции сообщений от Службы SignalR к клиентам в режиме реального времени. Дополнительные сведения о том, как разработать и развернуть Функции Azure с помощью привязки Службы SignalR, которая построена на основе REST API.