Поделиться через


Отправка сообщений с сервера

Знакомая модель HTTP-запроса и ответа была разработана для упрощения работы с и масштабируемой моделью. Однако в настоящее время конечные пользователи требуют гораздо больше от Интернета, чем изначально он был разработан. Протокол HTTP требует от пользователей инициировать запрос, чтобы получить ответ. Но разработчикам нужен способ отправки данных с сервера на клиенты, не запрашивая его; другими словами, им нужно "отправить" данные клиентам, например отправить последнюю цену торгов продукта на аукционе или быстро движущихся цен на акции в финансовом приложении.

GIF-файл сервера приложений, который отправляет данные в подключенный клиент.

В этом кратком руководстве показано, как

  • подписка на сообщения с сервера приложений
  • отправка данных с сервера приложений ко всем подключенным клиентам

Внимание

Необработанные строка подключения отображаются в этой статье только для демонстрационных целей.

Строка подключения содержит сведения об авторизации, требуемые для доступа приложения к службе Azure Web PubSub. Ключ доступа в строке подключения аналогичен паролю привилегированного пользователя для службы. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты подключения.WebPubSubServiceClient

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

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

  • Ресурс Web PubSub. Если вы не создали его, вы можете выполнить инструкции. Создание ресурса Web PubSub
  • Редактор кода, например Visual Studio Code.
  • Установка зависимостей для языка, который вы планируете использовать

Создание клиента подписчика

Чтобы подписаться на сообщения , отправленные с сервера приложений, клиента, будь то браузер, мобильное приложение или устройство Интернета вещей, сначала необходимо подключиться к ресурсу Web PubSub и прослушивать соответствующее событие сообщения.

Создание каталога проекта с именем subscriber и установка необходимых зависимостей

mkdir subscriber
cd subscriber
npm init -y
    
# The client SDK is available as a module on NPM
npm install @azure/web-pubsub-client

Подключитесь к ресурсу Web PubSub и зарегистрируйте прослушиватель для server-message события

Клиент использует URL-адрес клиентского доступа для подключения и проверки подлинности с помощью ресурса. Этот URL-адрес следует шаблону wss://<service_name>.webpubsub.azure.com/client/hubs/<hub_name>?access_token=<token>. У клиента может быть несколько способов получения URL-адреса клиентского доступа. Для этого краткого руководства можно скопировать и вставить один из портал Azure, показанный на следующей схеме. Рекомендуется не жестко кодировать URL-адрес клиентского доступа в коде. В рабочей среде обычно настраивается сервер приложений для возврата этого URL-адреса по запросу. Создание URL-адреса клиентского доступа подробно описывает практику.

На схеме показано, как получить URL-адрес клиентского доступа.

Как показано на схеме выше, клиент присоединяется к концентратору с именем myHub1.

В папке subscriber проекта создайте файл с именем subscribe.js со следующим кодом.

const { WebPubSubClient } = require("@azure/web-pubsub-client");

// Instantiates the client object
// <client-access-url> is copied from Azure portal mentioned above
const client = new WebPubSubClient("<client-access-url>")

// Registers a handler for the "server-message" event
client.on("server-message", (e) => {
    console.log(`Received message ${e.message.data}`)
});

// Before a client can receive a message, 
// you must invoke start() on the client object.
client.start();

Запуск программы

node subscribe.js

Теперь этот клиент устанавливает подключение к ресурсу Web PubSub и готов получать сообщения, отправленные с сервера приложений.

Отправка сообщений с сервера приложений

Теперь, когда у вас есть клиент, подключенный к ресурсу Web PubSub, вы можете отправлять сообщения с сервера приложений в любое время с помощью пакета SDK сервера, предоставленного Web PubSub.

Создание нового каталога проекта с именем publisher и установка необходимых зависимостей

mkdir publisher
cd publisher

npm init

# This command installs the server SDK from NPM, 
# which is different from the client SDK you used in subscribe.js
npm install --save @azure/web-pubsub

publish.js Создание файла со следующим кодом

const { WebPubSubServiceClient } = require('@azure/web-pubsub');

// This is the hub name we used on Azure portal when generating the Client Access URL. 
// It ensures this server can push messages to clients in the hub named "myHub1".
const hub = "myHub1";
    
let server = new WebPubSubServiceClient(process.env.WebPubSubConnectionString, hub);

// By default, the content type is `application/json`. 
// Specify contentType as `text/plain` for this demo.
server.sendToAll(process.argv[2], { contentType: "text/plain" });

Вызов server.sendToAll() отправляет сообщение всем подключенным клиентам в центре.

Получение строки подключения

Внимание

Строка подключения включает сведения о авторизации, необходимые для доступа к службе Web PubSub приложения. Ключ доступа в строке подключения аналогичен паролю привилегированного пользователя для службы.

В этом кратком руководстве мы получите его из портал Azure, как показано ниже. На схеме показано, как получить URL-адрес доступа к клиенту.

Запуск серверной программы

Выполните следующие команды в новой командной оболочке.

Необработанные строка подключения отображаются в этой статье только для демонстрационных целей. В рабочих средах всегда защищать ключи доступа. Используйте Azure Key Vault для безопасного управления ключами и защиты подключения.WebPubSubServiceClient

# Set the environment variable for your connection string.
export WebPubSubConnectionString="<Put your connection string here>" 

node publish.js "Hello World"

Наблюдение за полученными сообщениями на стороне клиента

GIF-файл демонстрации сервера приложений, который отправляет данные в подключенный клиент.

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

Итоги

В этом кратком руководстве показано, как легко отправлять сообщения с сервера приложений ко всем подключенным клиентам в концентраторе. Кроме того, Web PubSub позволяет отправлять сообщения в

  • подмножество клиентов в концентраторе
  • определенная группа в концентраторе
  • Подмножество клиентов в группе

Эти API позволяют множество вариантов использования, позволяя разработчикам сосредоточиться на уникальной бизнес-логике в то время как быть уверены, что Web PubSub предлагает низкую задержку (<100 мс), высокий уровень доступности и массовый масштаб (миллион и одновременные подключения).

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

На следующем шаге мы рассмотрим, как работать с системой событий Web PubSub, необходимой для создания полных веб-приложений.