Sdílet prostřednictvím


Začínáme s požadavky HTTP relay Hybrid Connections v Node.js

V tomto rychlém startu vytvoříte Node.js aplikace odesílatele a příjemce, které odesílají a přijímají zprávy pomocí protokolu HTTP. Aplikace používají funkci Hybridní připojení služby Azure Relay. Obecné informace o Azure Relay najdete v tématu Azure Relay.

V tomto rychlém startu provedete následující kroky:

  1. Pomocí webu Azure Portal vytvoříte obor názvů služby Relay.
  2. Pomocí webu Azure Portal vytvoříte v tomto oboru názvů hybridní připojení.
  3. Napíšeme konzolovou aplikaci serveru (naslouchacího procesu) pro příjem zpráv.
  4. Napíšeme konzolovou aplikaci klienta (odesílatele) pro odesílání zpráv.
  5. Spusťte aplikace.

Požadavky

Vytvoření oboru názvů služby Service Bus pomocí webu Azure Portal

  1. Přihlaste se k portálu Azure.

  2. V nabídce vlevo vyberte Všechny služby . Vyberte Možnost Integrace, vyhledejte Relays, přesuňte myš na Relays a pak vyberte Vytvořit.

    Snímek obrazovky s výběrem tlačítka Relays –> Vytvořit

  3. Na stránce Vytvořit obor názvů postupujte takto:

    1. Zvolte předplatné Azure, ve kterém chcete vytvořit obor názvů.

    2. Pro skupinu prostředků zvolte existující skupinu prostředků, do které chcete obor názvů umístit, nebo vytvořte novou.

    3. Zadejte název oboru názvů služby Relay.

    4. Vyberte oblast, ve které má být váš obor názvů hostovaný.

    5. Vyberte Zkontrolovat a vytvořit v dolní části stránky.

      Snímek obrazovky se stránkou Vytvořit obor názvů

    6. Na stránce Zkontrolovat a vytvořit vyberte Vytvořit.

    7. Po několika minutách se zobrazí stránka Relay pro obor názvů.

      Snímek obrazovky s domovskou stránkou oboru názvů služby Relay

Získání přihlašovacích údajů pro správu

  1. Na stránce Relay vyberte v nabídce vlevo zásady sdíleného přístupu.

  2. Na stránce Zásady sdíleného přístupu vyberte RootManageSharedAccessKey.

  3. V části Zásady SAS: RootManageSharedAccessKey vyberte tlačítko Kopírovat vedle primárního připojovacího řetězce. Tato akce zkopíruje připojovací řetězec do schránky pro pozdější použití. Vložte tuto hodnotu do Poznámkového bloku nebo jiného dočasného umístění.

  4. Zopakujte předchozí krok, zkopírujte si hodnotu primárního klíče a vložte ji do dočasného umístění pro pozdější použití.

    Snímek obrazovky zobrazující informace o připojení pro obor názvů služby Relay

Vytvoření hybridního připojení pomocí webu Azure Portal

Na stránce Relay pro váš obor názvů vytvořte hybridní připojení pomocí následujícího postupu.

  1. V nabídce vlevo v části Entity vyberte Hybridní připojení a pak vyberte + Hybridní připojení.

    Snímek obrazovky se stránkou Hybridní připojení

  2. Na stránce Vytvořit hybridní připojení zadejte název hybridního připojení a vyberte Vytvořit.

    Snímek obrazovky se stránkou Vytvořit hybridní připojení

Vytvoření serverové aplikace (naslouchací proces)

Aby bylo možné naslouchat zprávám ze služby Relay a přijímat je, napíšeme konzolovou aplikaci Node.js.

Vytvoření aplikace Node.js

Vytvořte nový soubor JavaScript s názvem listener.js.

Přidání balíčku Relay

Spusťte z příkazového řádku uzlu ve složce projektu příkaz npm install hyco-https.

Zápis kódu pro zpracování žádostí

  1. Na začátek souboru listener.js přidejte následující konstantu.

    const https = require('hyco-https');
    
  2. Do souboru listener.js přidejte následující konstanty s podrobnostmi o hybridním připojení. Zástupné symboly v závorkách nahraďte hodnotami, které jste získali při vytváření hybridního připojení.

    • const ns – Obor názvů služby Relay. Nezapomeňte použít plně kvalifikovaný obor názvů, například {namespace}.servicebus.windows.net.
    • const path – Název hybridního připojení.
    • const keyrule – Název klíče zásad sdíleného přístupu, který je RootManageSharedAccessKey ve výchozím nastavení.
    • const key – Primární klíč oboru názvů, který jste si uložili dříve.
  3. Do souboru listener.js přidejte následující kód. :

    Všimněte si, že kód se nijak neliší od jednoduchého příkladu serveru HTTP, který najdete v Node.js kurzech pro začátečníky, což je výjimka použití createRelayedServer místo typické createServer funkce.

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

    Soubor listener.js by měl vypadat takto:

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

Vytvoření klientské aplikace (odesílatel)

Aby bylo možné odesílat zprávy do služby Relay, můžete použít libovolného klienta HTTP nebo napsat konzolovou aplikaci Node.js.

Vytvoření aplikace Node.js

Pokud jste při vytváření služby Relay zakázali možnost Vyžaduje autorizaci klientů, můžete odeslat žádosti na adresu URL hybridních připojení pomocí libovolného prohlížeče. Pro přístup k chráněným koncovým bodům je nutné vytvořit a předat token v hlavičce ServiceBusAuthorization, která se tady zobrazí.

Začněte tím, že vytvoříte nový soubor JavaScript s názvem sender.js.

Přidání balíčku Správce balíčků přenosového uzlu

Spusťte z příkazového řádku uzlu ve složce projektu příkaz npm install hyco-https. Tento balíček také importuje běžný balíček https. Hlavním rozdílem na straně klienta je, že balíček poskytuje funkce k vytvoření identifikátorů URI a tokenů služby Relay.

Napsání kódu pro odesílání zpráv

  1. Na začátek souboru sender.js přidejte následující konstanty (constants):

    const https = require('hyco-https');
    
  2. Do souboru sender.js přidejte následující konstanty s podrobnostmi o hybridním připojení. Zástupné symboly v závorkách nahraďte hodnotami, které jste získali při vytváření hybridního připojení.

    • const ns – Obor názvů služby Relay. Nezapomeňte použít plně kvalifikovaný obor názvů, například {namespace}.servicebus.windows.net.
    • const path – Název hybridního připojení.
    • const keyrule – Název klíče zásad sdíleného přístupu, který je RootManageSharedAccessKey ve výchozím nastavení.
    • const key – Primární klíč oboru názvů, který jste si uložili dříve.
  3. Do souboru sender.js přidejte následující kód. Všimněte si, že se kód výrazně neliší od pravidelného použití klienta Node.js HTTPS; stačí přidat autorizační hlavičku.

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

    Soubor sender.js by měl vypadat takto:

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

Poznámka:

Ukázkový kód v tomto článku používá připojovací řetězec k ověření v oboru názvů Služby Azure Relay, aby byl kurz jednoduchý. Doporučujeme používat ověřování Microsoft Entra ID v produkčních prostředích místo použití připojovací řetězec nebo sdílených přístupových podpisů, které se dají snadněji ohrozit. Podrobné informace a vzorový kód pro použití ověřování POMOCÍ ID Microsoft Entra najdete v tématu Ověřování a autorizace aplikace pomocí Microsoft Entra ID pro přístup k entitě Azure Relay a ověření spravované identity pomocí Microsoft Entra ID pro přístup k prostředkům Azure Relay.

Spuštění aplikací

  1. Spuštění serverové aplikace: v příkazovém řádku Node.js zadejte node listener.js.
  2. Spuštění klientské aplikace: v příkazovém řádku Node.js zadejte node sender.js a nějaký text.
  3. Ujistěte se, že výstupem konzoly serverové aplikace je text, který jste zadali v klientské aplikaci.

Blahopřejeme, vytvořili jste kompletní aplikaci Hybrid Connections pomocí Node.js!

Další kroky

V tomto rychlém startu jste vytvořili Node.js klientských a serverových aplikací, které k odesílání a příjmu zpráv používaly protokol HTTP. Funkce Hybridní připojení služby Azure Relay také podporuje odesílání a přijímání zpráv pomocí webSocketů. Pokud se chcete dozvědět, jak používat webSocket s Azure Relay Hybrid Connections, přečtěte si rychlý start k WebSockets.

V tomto rychlém startu jste použili Node.js k vytváření klientských a serverových aplikací. Informace o psaní klientských a serverových aplikací pomocí rozhraní .NET Framework najdete v rychlém startu pro .NET WebSockets nebo v rychlém startu HTTP pro .NET.