Erste Schritte mit HTTP-Anforderungen von Relay Hybrid Connections in Node.js

In dieser Schnellstartanleitung erstellen Sie Sender- und Empfängeranwendungen in Node.js, die mithilfe von HTTP Nachrichten senden und empfangen. Die Anwendungen verwenden das Hybrid Connections-Feature von Azure Relay. Allgemeine Informationen zu Azure Relay finden Sie unter Was ist Azure Relay?.

Diese Schnellstartanleitung umfasst folgende Schritte:

  1. Erstellen eines Relay-Namespace über das Azure-Portal
  2. Erstellen einer Hybridverbindung in diesem Namespace über das Azure-Portal
  3. Erstellen einer Serverkonsolenanwendung (Listener) zum Empfangen von Nachrichten
  4. Erstellen einer Clientkonsolenanwendung (Absender) zum Senden von Nachrichten
  5. Ausführen von Anwendungen

Voraussetzungen

Erstellen eines Namespace mithilfe des Azure-Portals

  1. Melden Sie sich beim Azure-Portal an.

  2. Wählen Sie im Menü links Alle Dienste aus. Wählen Sie Integration aus, suchen Sie nach Relays, zeigen Sie mit der Maus auf Relays, und wählen Sie dann Erstellen.

    Screenshot: Auswahl von Relays > Schaltfläche „Erstellen“

  3. Führen Sie die folgenden Schritte auf der Seite Namespace erstellen aus:

    1. Wählen Sie ein Azure-Abonnement aus, in dem der Namespace erstellt werden soll.

    2. Wählen Sie unter Ressourcengruppe eine vorhandene Ressourcengruppe aus, in der der Namespace platziert werden soll, oder erstellen Sie eine neue Ressourcengruppe.

    3. Geben Sie einen Namen für den Relay-Namespace ein.

    4. Wählen Sie die Region aus, in dem bzw. in der Ihr Namespace gehostet werden soll.

    5. Wählen Sie am unteren Rand der Seite die Option Bewerten + erstellen aus.

      Screenshot: Seite „Namespace erstellen“

    6. Wählen Sie auf der Seite Überprüfen + erstellen die Option Erstellen aus.

    7. Nach ein paar Minuten sehen Sie die Seite Vermittlung für den Namespace.

      Screenshot: Startseite für den Relay-Namespace

Abrufen von Anmeldeinformationen für die Verwaltung

  1. Wählen Sie auf der Seite Vermittlung die Option Freigegebene Zugriffsrichtlinien im linken Menü aus. `

  2. Wählen Sie auf der Seite Freigegebene Zugriffsrichtlinien die Option RootManageSharedAccessKey aus.

  3. Klicken Sie unter SAS-Richtlinie: RootManageSharedAccessKey neben Primäre Verbindungszeichenfolge auf die Schaltfläche Kopieren. Dadurch wird die Verbindungszeichenfolge zur späteren Verwendung in die Zwischenablage kopiert. Fügen Sie diesen Wert in den Editor oder an einem anderen temporären Speicherort ein.

  4. Wiederholen Sie den vorherigen Schritt, um den Wert von Primärschlüssel zu kopieren und zur späteren Verwendung an einem temporären Speicherort einzufügen.

    Screenshot: Verbindungsinformationen für den Relay-Namespace

Erstellen einer Hybridverbindung mit dem Azure-Portal

Führen Sie auf der Seite Relay für Ihren Namespace die folgenden Schritte aus, um eine Hybridverbindung zu erstellen.

  1. Wählen Sie im linken Menü unter Entitäten die Option Hybridverbindungen und dann + Hybridverbindung aus.

    Screenshot: Seite „Hybridverbindungen“

  2. Geben Sie auf der Seite Hybridverbindung erstellen einen Namen für die Hybridverbindung ein, und wählen Sie dann Erstellen aus.

    Screenshot: Seite „Hybridverbindung erstellen“

Erstellen einer Serveranwendung (Listener)

Schreiben Sie eine Node.js-Konsolenanwendung, um auf Nachrichten des Relays zu lauschen und sie zu empfangen.

Erstellen einer Node.js-Anwendung

Erstellen Sie eine neue JavaScript-Datei namens listener.js.

Hinzufügen des Relay-Pakets

Führen Sie npm install hyco-https über eine Node-Eingabeaufforderung in Ihrem Projektordner aus.

Schreiben von Code für die Verarbeitung von Anforderungen

  1. Fügen Sie am Anfang der listener.js-Datei die folgende Konstante hinzu.

    const https = require('hyco-https');
    
  2. Fügen Sie der Datei listener.js die folgenden Konstanten als Hybridverbindungsdetails hinzu. Ersetzen Sie die Platzhalter in Klammern durch die Werte, die beim Erstellen der Hybridverbindung abgerufen wurden.

    • const ns – der Relay-Namespace. Achten Sie darauf, dass Sie den vollqualifizierten Namespacenamen verwenden, wie z.B. {namespace}.servicebus.windows.net.
    • const path – der Name der Hybridverbindung
    • const keyrule – Name Ihres Schlüssels für freigegebene Zugriffsrichtlinien, der standardmäßig RootManageSharedAccessKey ist.
    • const key – Der Primärschlüssel des zuvor gespeicherten Namespaces.
  3. Fügen Sie der Datei listener.js den folgenden Code hinzu. decodiert werden:

    Sie werden feststellen, dass der Code sich nicht wesentlich von einem einfachen HTTP-Serverbeispiel unterscheidet, wie Sie es in Node.js-Einsteigertutorials finden, mit Ausnahme der Verwendung von createRelayedServer anstelle der normalen createServer-Funktion.

    var uri = https.createRelayListenUri(ns, path);
    var server = https.createRelayedServer(
        {
            server : uri,
            token : () => https.createRelayToken(uri, keyrule, key)
        },
        (req, res) => {
            console.log('request accepted: ' + req.method + ' on ' + req.url);
            res.setHeader('Content-Type', 'text/html');
            res.end('<html><head><title>Hey!</title></head><body>Relayed Node.js Server!</body></html>');
        });
    
    server.listen( (err) => {
            if (err) {
              return console.log('something bad happened', err)
            }
            console.log(`server is listening on ${port}`)
          });
    
    server.on('error', (err) => {
        console.log('error: ' + err);
    });
    

    Die Datei „listener.js“ sollte wie folgt aussehen:

    const https = require('hyco-https');
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    var uri = https.createRelayListenUri(ns, path);
    var server = https.createRelayedServer(
        {
            server : uri,
            token : () => https.createRelayToken(uri, keyrule, key)
        },
        (req, res) => {
            console.log('request accepted: ' + req.method + ' on ' + req.url);
            res.setHeader('Content-Type', 'text/html');
            res.end('<html><head><title>Hey!</title></head><body>Relayed Node.js Server!</body></html>');
        });
    
    server.listen( (err) => {
            if (err) {
              return console.log('something bad happened', err)
            }
            console.log(`server is listening on ${port}`)
          });
    
    server.on('error', (err) => {
        console.log('error: ' + err);
    });
    

Erstellen einer Clientanwendung (Absender)

Sie können einen beliebigen HTTP-Client verwenden oder eine Node.js-Konsolenanwendung schreiben, um Nachrichten an das Relay zu senden.

Erstellen einer Node.js-Anwendung

Wenn Sie die Option „Clientautorisierung erforderlich“ bei der Relay-Erstellung deaktiviert haben, können Sie mit jedem Browser Anforderungen an die URL der Hybridverbindungen senden. Für den Zugriff auf geschützte Endpunkte müssen Sie ein Token im ServiceBusAuthorization-Header, der hier gezeigt wird, erstellen und übergeben.

Erstellen Sie zu Beginn eine neue JavaScript-Datei namens sender.js.

Hinzufügen des Relay Node Paket-Manager-Pakets

Führen Sie npm install hyco-https über eine Node-Eingabeaufforderung in Ihrem Projektordner aus. Dieses Paket importiert auch das reguläre https-Paket. Für die Clientseite ist der wesentliche Unterschied, dass das Paket Funktionen zum Erstellen von Relay-URIs und Token bietet.

Schreiben von Code zum Senden von Nachrichten

  1. Fügen Sie die folgenden constants am Anfang der Datei sender.js hinzu:

    const https = require('hyco-https');
    
  2. Fügen Sie der Datei sender.js die folgenden Konstanten als Hybridverbindungsdetails hinzu. Ersetzen Sie die Platzhalter in Klammern durch die Werte, die beim Erstellen der Hybridverbindung abgerufen wurden.

    • const ns – der Relay-Namespace. Achten Sie darauf, dass Sie den vollqualifizierten Namespacenamen verwenden, wie z.B. {namespace}.servicebus.windows.net.
    • const path – der Name der Hybridverbindung
    • const keyrule – Name Ihres Schlüssels für freigegebene Zugriffsrichtlinien, der standardmäßig RootManageSharedAccessKey ist.
    • const key – Der Primärschlüssel des zuvor gespeicherten Namespaces.
  3. Fügen Sie der Datei sender.js den folgenden Code hinzu. Sie werden feststellen, dass der Code sich nicht wesentlich von der normalen Verwendung des Node.js-HTTPS-Clients unterscheidet; er fügt nur den Autorisierungsheader hinzu.

    https.get({
         hostname : ns,
         path : (!path || path.length == 0 || path[0] !== '/'?'/':'') + path,
         port : 443,
         headers : {
             'ServiceBusAuthorization' : 
                 https.createRelayToken(https.createRelayHttpsUri(ns, path), keyrule, key)
         }
    }, (res) => {
         let error;
         if (res.statusCode !== 200) {
             console.error('Request Failed.\n Status Code: ${statusCode}');
             res.resume();
         } 
         else {
             res.setEncoding('utf8');
             res.on('data', (chunk) => {
                 console.log(`BODY: ${chunk}`);
             });
             res.on('end', () => {
                 console.log('No more data in response.');
             });
         };
    }).on('error', (e) => {
         console.error(`Got error: ${e.message}`);
    });
    

    Die Datei „sender.js“ sollte wie folgt aussehen:

    const https = require('hyco-https');
    
    const ns = "{RelayNamespace}";
    const path = "{HybridConnectionName}";
    const keyrule = "{SASKeyName}";
    const key = "{SASKeyValue}";
    
    https.get({
        hostname : ns,
        path : (!path || path.length == 0 || path[0] !== '/'?'/':'') + path,
        port : 443,
        headers : {
            'ServiceBusAuthorization' : 
                https.createRelayToken(https.createRelayHttpsUri(ns, path), keyrule, key)
        }
    }, (res) => {
        let error;
        if (res.statusCode !== 200) {
            console.error('Request Failed.\n Status Code: ${statusCode}');
            res.resume();
        } 
        else {
            res.setEncoding('utf8');
            res.on('data', (chunk) => {
                console.log(`BODY: ${chunk}`);
            });
            res.on('end', () => {
                console.log('No more data in response.');
            });
        };
    }).on('error', (e) => {
        console.error(`Got error: ${e.message}`);
    });
    

Ausführen der Anwendungen

  1. Führen Sie die Serveranwendung aus: Geben Sie in einer Node.js-Eingabeaufforderung node listener.js ein.
  2. Führen Sie die Clientanwendung aus: Geben Sie in einer Node.js-Eingabeaufforderung node sender.js und einen beliebigen Text ein.
  3. Stellen Sie sicher, dass von der Konsole der Serveranwendung der Text ausgegeben wird, der in die Clientanwendung eingegeben wurde.

Glückwunsch! Sie haben mithilfe von Node.js eine Anwendung für End-to-End-Hybridverbindungen erstellt.

Nächste Schritte

In dieser Schnellstartanleitung haben Sie Client- und Serveranwendungen in Node.js erstellt, die mithilfe von HTTP Nachrichten senden und empfangen. Das Hybrid Connections-Feature von Azure Relay unterstützt auch die Verwendung von WebSockets zum Senden und Empfangen von Nachrichten. Informationen zur Verwendung von WebSockets mit Hybrid Connections von Azure Relay finden Sie unter Erste Schritte mit WebSockets von Relay Hybrid Connections in Node.

In dieser Schnellstartanleitung haben Sie Node.js zum Erstellen von Client- und Serveranwendungen verwendet. Informationen zum Schreiben von Client- und Serveranwendungen mithilfe von .NET Framework finden Sie unter Erste Schritte mit WebSockets von Relay Hybrid Connections in .NET oder Erste Schritte mit WebSockets von Relay Hybrid Connections in Node.