Начало работы с гибридными подключениями Azure Relay с использованием WebSocket и Node.js

В этом кратком руководстве описано, как создать приложения Node.js, которые отправляют и получают сообщения с использованием гибридных подключений по протоколу WebSocket в Azure Relay. См. дополнительные сведения о службе Azure Relay.

При работе с этим кратким руководством вы выполните следующие задачи:

  1. Создайте пространство имен ретранслятора с помощью портала Azure.
  2. Создайте гибридное подключение в этом пространстве имен с помощью портала Azure.
  3. Создайте серверное консольное приложение (прослушиватель) для получения сообщений.
  4. Создайте клиентское консольное приложение (отправитель) для отправки сообщений.
  5. Запустите приложения.

Предварительные требования

Создание пространства имен

  1. Войдите на портал Azure.

  2. Выберите Создать ресурс. Затем выберите Integration Relay ( Интеграцияретранслятора). Если пункт Ретрансляция в списке отсутствует, щелкните Просмотреть все в правом верхнем углу.

  3. Выберите Создатьи введите имя пространства имен в поле Имя. Портал Azure проверит, доступно ли это имя.

  4. Выберите подписку Azure, в которой будет создано пространство имен.

  5. Выберите существующую группу ресурсов, в которую будет размещено это пространство имен, или создайте новую.

  6. Выберите страну или регион для размещения пространства имен.

    Create namespace

  7. Нажмите кнопку создания. Портал Azure создаст пространство имен и включит его. Через несколько минут система подготовит к работе ресурсы для вашей учетной записи.

Получение учетных данных управления

  1. Нажмите Все ресурсы и выберите созданное имя пространства имен.

  2. Выберите Политики общего доступа.

  3. В окне Политики общего доступа выберите RootManageSharedAccessKey.

  4. В разделе SAS Policy: RootManageSharedAccessKey (Политика SAS: RootManageSharedAccessKey) нажмите кнопку Копировать рядом с элементом Первичная строка подключения. Строка подключения будет скопирована в буфер обмена для дальнейшего использования. Вставьте на время эти значения в Блокноте или любом другом месте.

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

    connection-string

Создание гибридного подключения

Убедитесь, что создано пространство имен ретранслятора.

  1. Войдите на портал Azure.

  2. В меню слева выберите Все ресурсы.

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

  4. В разделе Relay namespace (Пространство имен ретранслятора) выберите Гибридные подключения.

    Create a hybrid connection

  5. В окне обзора пространств имен выберите + Гибридное подключение.

    Select the hybrid connection

  6. В разделе Создание гибридного подключения введите имя гибридного подключения. Не изменяйте остальные значения по умолчанию.

    Select New

  7. Нажмите кнопку создания.

Создание серверного приложения (прослушивателя)

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

Создание приложения Node.js

Создайте новый файл JavaScript с именем listener.js.

Добавление пакета ретранслятора NPM

Запустите npm install hyco-ws из командной строки NPM в папке проекта.

Написание кода для получения сообщений

  1. Добавьте следующую константу в верхнюю часть файла listener.js.

    const WebSocket = require('hyco-ws');
    
  2. Добавьте следующие константы в файл listener.js для сведений о гибридном подключении. Замените заполнители в скобках значениями, которые получены при создании гибридного подключения.

    1. const ns — пространство имен ретранслятора. Необходимо использовать полное имя пространства имен, например {namespace}.servicebus.windows.net.
    2. const path — имя гибридного подключения.
    3. const keyrule — имя ключа SAS.
    4. const key — значение ключа SAS.
  3. Добавьте в файл listener.js следующий код:

    var wss = WebSocket.createRelayedServer(
    {
        server : WebSocket.createRelayListenUri(ns, path),
        token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
    }, 
    function (ws) {
        console.log('connection accepted');
        ws.onmessage = function (event) {
            console.log(event.data);
        };
        ws.on('close', function () {
            console.log('connection closed');
        });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

    Вот как будет выглядеть файл listener.js:

    const WebSocket = require('hyco-ws');
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    var wss = WebSocket.createRelayedServer(
        {
            server : WebSocket.createRelayListenUri(ns, path),
            token: WebSocket.createRelayToken('http://' + ns, keyrule, key)
        }, 
        function (ws) {
            console.log('connection accepted');
            ws.onmessage = function (event) {
                console.log(event.data);
            };
            ws.on('close', function () {
                console.log('connection closed');
            });       
    });
    
    console.log('listening');
    
    wss.on('error', function(err) {
        console.log('error' + err);
    });
    

Создание клиентского приложения (отправителя)

Для отправки сообщений в ретранслятор создайте консольное приложение Node.js.

Создание приложения Node.js

Создайте новый файл JavaScript с именем sender.js.

Добавление пакета ретранслятора NPM

Запустите npm install hyco-ws из командной строки NPM в папке проекта.

Написание кода для отправки сообщений

  1. Добавьте constants в начало файла sender.js.

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
  2. Добавьте следующие константы в файл sender.js для сведений о гибридном подключении. Замените заполнители в скобках значениями, которые получены при создании гибридного подключения.

    1. const ns — пространство имен ретранслятора. Необходимо использовать полное имя пространства имен, например {namespace}.servicebus.windows.net.
    2. const path — имя гибридного подключения.
    3. const keyrule — имя ключа SAS.
    4. const key — значение ключа SAS.
  3. Добавьте в файл sender.js следующий код:

    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

    Файл sender.js должен выглядеть следующим образом:

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    WebSocket.relayedConnect(
        WebSocket.createRelaySendUri(ns, path),
        WebSocket.createRelayToken('http://'+ns, keyrule, key),
        function (wss) {
            readline.on('line', (input) => {
                wss.send(input, null);
            });
    
            console.log('Started client interval.');
            wss.on('close', function () {
                console.log('stopping client interval');
                process.exit();
            });
        }
    );
    

Запуск приложений

  1. Запустите серверное приложение. Для этого в командной строке Node.js введите node listener.js.

  2. Запустите клиентское приложение. Для этого в командной строке Node.js введите node sender.js, а затем любой текст.

  3. Убедитесь, что серверное консольное приложение выводит текст, введенный в клиентском приложении.

    Console windows testing both the server and client applications.

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

Дальнейшие действия

В этом кратком руководстве описано, как создать клиентские и серверные приложения Node.js, которые отправляют и получают сообщения по протоколу WebSocket. Функция гибридных подключений службы Azure Relay также поддерживает использование протокола HTTP для отправки и получения сообщений. См. дополнительные сведения об использовании протокола HTTP с Node.js и гибридными подключениями Azure Relay.

В этом кратком руководстве описано, как использовать Node.js для создания клиентских и серверных приложений. Сведения о том, как создавать клиентские и серверные приложения с помощью .NET Framework, см. в руководствах по использованию .NET и WebSocket или .NET и HTTP.