Dela via


Kom igång med RELAY Hybrid Connections HTTP-begäranden i Node.js

I den här snabbstarten skapar du ett sändar- och mottagarprogram i Node.js som skickar och tar emot meddelanden med HTTP-protokollet. Programmen använder funktionen Hybridanslutningar i Azure Relay. Läs mer om Azure Relay i allmänhet i Azure Relay.

I den här snabbstarten gör du följande:

  1. Skapa ett Relay-namnområde med Azure Portal.
  2. Skapa en hybridanslutning i det namnområdet med Azure Portal.
  3. Skriva ett serverkonsolprogram (lyssnare) för att ta emot meddelanden.
  4. Skriva ett klientkonsolprogram (avsändare) för att ta emot meddelanden.
  5. Kör program.

Förutsättningar

Skapa ett namnområde med Azure Portal

  1. Logga in på Azure-portalen.

  2. Välj Alla tjänster på den vänstra menyn. Välj Integrering, sök efter Reläer, flytta musen över Reläer och välj sedan Skapa.

    Skärmbild som visar valet av knappen Reläer –> Skapa.

  3. Följ dessa steg på sidan Skapa namnområde :

    1. Välj en Azure-prenumeration där du vill skapa namnområdet.

    2. För Resursgrupp väljer du en befintlig resursgrupp där du vill placera namnområdet eller skapar en ny.

    3. Ange ett namn för Relay-namnområdet.

    4. Välj den region där ditt namnområde ska finnas.

    5. Välj Granska + skapa längst ned på sidan.

      Skärmbild som visar sidan Skapa namnområde.

    6. På sidan Granska + skapa väljer du Skapa.

    7. Efter några minuter visas sidan Relay för namnområdet.

      Skärmbild som visar startsidan för Relay-namnområdet.

Få autentiseringsuppgifter för hantering

  1. På sidan Relay väljer du Principer för delad åtkomst på den vänstra menyn. `

  2. På sidan Principer för delad åtkomst väljer du RootManageSharedAccessKey.

  3. Under SAS-princip: RootManageSharedAccessKey väljer du knappen Kopiera bredvid Primär anslutningssträng. Den här åtgärden kopierar niska veze till Urklipp för senare användning. Klistra in det här värdet i Anteckningar eller på en tillfällig plats.

  4. Upprepa föregående steg för att kopiera och klistra in värdet för primärnyckeln till en tillfällig plats för senare användning.

    Skärmbild som visar anslutningsinformationen för Relay-namnområdet.

Skapa en hybridanslutning med Azure Portal

På sidan Relay för ditt namnområde följer du de här stegen för att skapa en hybridanslutning.

  1. På den vänstra menyn under Entiteter väljer du Hybridanslutningar och sedan + Hybridanslutning.

    Skärmbild som visar sidan Hybridanslutningar.

  2. På sidan Skapa hybridanslutning anger du ett namn för hybridanslutningen och väljer Skapa.

    Skärmbild som visar sidan Skapa hybridanslutning.

Skapa ett serverprogram (lyssnare)

För att lyssna på och ta emot meddelanden från Relay skriver du ett Node.js-konsolprogram.

Skapa ett Node.js-program

Skapa en ny JavaScript-fil som kallas listener.js.

Lägg till Relay-paketet

Kör npm install hyco-https från Kommandotolken för en nod i projektmappen.

Skriv kod för att hantera begäranden

  1. Lägg till följande konstant överst i filen listener.js.

    const https = require('hyco-https');
    
  2. Lägg till följande konstanter i filen listener.js för hybridanslutningsinformationen. Ersätt platshållarna inom hakparentes med de värden du erhöll när du skapade hybridanslutningen.

    • const ns – Relay-namnområde. Se till att du använder det fullständiga namnområdesnamnet, till exempel {namespace}.servicebus.windows.net.
    • const path – Namnet på hybridanslutningen.
    • const keyrule – Namnet på nyckeln för principer för delad åtkomst, vilket är RootManageSharedAccessKey som standard.
    • const key – Primärnyckeln för namnområdet som du sparade tidigare.
  3. Lägg till följande kod i listener.js-filen: :

    Du märker att koden inte skiljer sig mycket från något enkelt HTTP-serverexempel som du kan hitta i Node.js självstudier för nybörjare, vilket är undantaget från att använda createRelayedServer i stället för den typiska createServer funktionen.

    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);
    });
    

    Så här bör din listener.js-fil se ut:

    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);
    });
    

Skapa ett klientprogram (avsändare)

För att skicka meddelanden till Relay kan du använda en HTTP-klient eller skriva ett Node.js-konsolprogram.

Skapa ett Node.js-program

Om du inaktiverade alternativet ”Klientauktorisering krävs” när du skapade reläet kan du skicka förfrågningar till URL:en för Hybridanslutningar i valfri webbläsare. För att komma åt skyddade slutpunkter måste du skapa och skicka en token i ServiceBusAuthorization-huvudet, som du ser här.

Starta genom att skapa en ny JavaScript-fil med namnet sender.js.

Lägg till relay node Upravljač za pakete-paketet

Kör npm install hyco-https från Kommandotolken för en nod i projektmappen. Med det här paketet importeras även det vanliga https-paketet. För klientsidan är den viktigaste skillnaden att paketet innehåller funktioner för att skapa Relay-URI:er och token.

Skriva kod för att skicka meddelanden

  1. Lägg till följande constants överst i sender.js-filen.

    const https = require('hyco-https');
    
  2. Lägg till följande konstanter i filen sender.js för hybridanslutningsinformationen. Ersätt platshållarna inom hakparentes med de värden du erhöll när du skapade hybridanslutningen.

    • const ns – Relay-namnområde. Se till att du använder det fullständiga namnområdesnamnet, till exempel {namespace}.servicebus.windows.net.
    • const path – Namnet på hybridanslutningen.
    • const keyrule – Namnet på nyckeln för principer för delad åtkomst, vilket är RootManageSharedAccessKey som standard.
    • const key – Primärnyckeln för namnområdet som du sparade tidigare.
  3. Lägg till följande kod i sender.js-filen: Du märker att koden inte skiljer sig avsevärt från den vanliga användningen av Node.js HTTPS-klienten. det lägger bara till auktoriseringshuvudet.

    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}`);
    });
    

    Så här bör din sender.js-fil se ut:

    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}`);
    });
    

Kommentar

Exempelkoden i den här artikeln använder en niska veze för att autentisera till ett Azure Relay-namnområde för att hålla självstudien enkel. Vi rekommenderar att du använder Microsoft Entra-ID-autentisering i produktionsmiljöer i stället för att använda niska veze eller signaturer för delad åtkomst, vilket är enklare att kompromettera. Detaljerad information och exempelkod för användning av Microsoft Entra-ID-autentisering finns i Autentisera och auktorisera ett program med Microsoft Entra-ID för åtkomst till Azure Relay-entiteter och Autentisera en hanterad identitet med Microsoft Entra-ID för åtkomst till Azure Relay-resurser.

Kör programmen

  1. Kör serverprogrammet: i en Node.js-kommandotolk skriver du in node listener.js.
  2. Kör klientprogrammet: från en Node.js-kommandotolken skriver du in node sender.js och anger lite text.
  3. Se till att serverprogramkonsolen matar ut den text som angavs i klientprogrammet.

Grattis, du har skapat ett hybridanslutningsprogram från slutpunkt till slutpunkt med hjälp av Node.js!

Nästa steg

I den här snabbstarten skapade du Node.js-klient- och -serverprogram som använde HTTP för att skicka och ta emot meddelanden. Funktionen Hybridanslutningar i Azure Relay stöder också användningen av WebSockets för att skicka och ta emot meddelanden. Läs om hur du använder WebSockets med Azure Relay-hybridanslutningar i WebSockets-snabbstarten.

I den här snabbstarten använde du Node.js för att skapa klient- och serverprogram. Om du vill läsa om hur du skriver klient- och serverprogram med hjälp av .NET Framework läser du .NET WebSockets-snabbstarten eller .NET HTTP-snabbstarten.