Introduzione a Websockets per Connessioni ibride di Inoltro di Azure in NodeGet started with Relay Hybrid Connections Websockets in Node

Questa esercitazione offre un'introduzione alla funzionalità Websockets per Connessioni ibride di Inoltro di Azure e illustra come usare Node.js per creare un'applicazione client che invia messaggi Websockets a un'applicazione listener corrispondente.This tutorial provides an introduction to Azure Relay Hybrid Connections Websockets feature, and shows how to use Node.js to create a client application that sends Websockets messages to a corresponding listener application.

Contenuto dell'esercitazioneWhat will be accomplished

Dato che le connessioni ibride richiedono sia un componente client che un componente server, in questa esercitazione verranno create due applicazioni console.Because Hybrid Connections requires both a client and a server component, create two console applications in this tutorial. Di seguito sono riportati i passaggi necessari:Here are the steps:

  1. Creare uno spazio dei nomi di inoltro usando il portale di Azure.Create a Relay namespace, using the Azure portal.
  2. Creare una connessione ibrida usando il portale di Azure.Create a hybrid connection, using the Azure portal.
  3. Scrivere un'applicazione console server per ricevere messaggi.Write a server console application to receive messages.
  4. Scrivere un'applicazione console client per inviare messaggi.Write a client console application to send messages.

prerequisitiPrerequisites

  1. Node.js.Node.js.
  2. Una sottoscrizione di Azure.An Azure subscription.

Nota

Per completare l'esercitazione, è necessario un account Azure.To complete this tutorial, you need an Azure account. È possibile attivare i benefici della sottoscrizione MSDN o iscriversi per un account gratuito.You can activate your MSDN subscriber benefits or sign up for a free account.

1. Creare uno spazio dei nomi tramite il portale di Azure1. Create a namespace using the Azure portal

Se è già stato creato uno spazio dei nomi dell'inoltro, passare alla sezione Creare una connessione ibrida usando il portale di Azure.If you already have a Relay namespace created, jump to the Create a hybrid connection using the Azure portal section.

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Nel menu a sinistra selezionare + Crea una risorsa.In the left menu, select + Create a resource. Selezionare quindi Integrazione aziendale > Inoltro.Then, select Enterprise Integration > Relay.
  3. Nel pannello Crea spazio dei nomi immettere un nome per lo spazio dei nomi.Under Create namespace, enter a namespace name. Verrà effettuato immediatamente un controllo sulla disponibilità del nome.The system immediately checks to see if the name is available.
  4. Nella casella Sottoscrizione selezionare una sottoscrizione di Azure in cui creare lo spazio dei nomi.In the Subscription box, select an Azure subscription in which to create the namespace.
  5. Nella casella Gruppo di risorse selezionare un gruppo di risorse esistente nel quale inserire lo spazio dei nomi oppure crearne uno nuovo.In the Resource group box, select an existing resource group in which to place the namespace, or create a new one.
  6. In Località selezionare il paese o l'area in cui deve essere ospitato lo spazio dei nomi.In Location, select the country or region in which your namespace should be hosted.

    Crea spazio dei nomi

  7. Selezionare Create.Select Create. Lo spazio dei nomi verrà creato e abilitato nel sistema.The system creates your namespace and enables it. Dopo alcuni minuti, il sistema effettua il provisioning delle risorse per l'account.After a few minutes, the system provisions resources for your account.

Ottenere le credenziali di gestioneGet management credentials

  1. Selezionare Tutte le risorse e quindi selezionare il nome dello spazio dei nomi appena creato.Select All resources, and then select the newly created namespace name.
  2. Nello spazio dei nomi dell'inoltro selezionare Criteri di accesso condiviso.Under the Relay namespace, select Shared access policies.
  3. In Criteri di accesso condiviso selezionare RootManageSharedAccessKey.Under Shared access policies, select RootManageSharedAccessKey.

    connection-info

  4. In Criteri: RootManageSharedAccessKey selezionare il pulsante Copia accanto a Stringa di connessione - chiave primaria.Under Policy: RootManageSharedAccessKey, select the Copy button next to Connection string–Primary key. La stringa di connessione viene copiata negli Appunti per un uso successivo.This copies the connection string to your clipboard for later use. Incollare questo valore nel Blocco note o in un'altra posizione temporanea.Paste this value into Notepad or some other temporary location.

    connection-string

  5. Ripetere il passaggio precedente per copiare e incollare il valore di Chiave primaria in un percorso temporaneo per usarlo in seguito.Repeat the preceding step to copy and paste the value of Primary key to a temporary location for later use.

2. Creare una connessione ibrida usando il portale di Azure2. Create a hybrid connection using the Azure portal

Se è già stata creata una connessione ibrida, passare alla sezione Creare un'applicazione server.If you already have a hybrid connection created, jump to the Create a server application section.

Verificare che sia già stato creato uno spazio dei nomi dell'inoltro.Ensure that you have already created a Relay namespace.

  1. Accedere al portale di Azure.Sign in to the Azure portal.
  2. Nel menu a sinistra selezionare Tutte le risorse.In the left menu, select All resources.
  3. Selezionare lo spazio dei nomi in cui si vuole creare la connessione ibrida.Select the namespace where you want to create the hybrid connection. In questo caso è mynewns.In this case, it is mynewns.
  4. In Relay namespace (Spazio dei nomi dell'inoltro) selezionare Connessioni ibride.Under Relay namespace, select Hybrid Connections.

    Creare una connessione ibrida

  5. Nella finestra della panoramica dello spazio dei nomi selezionare + Connessione ibridaIn the namespace overview window, select + Hybrid Connection

    Selezionare la connessione ibrida

  6. In Crea connessione ibrida immettere un valore per il nome della connessione ibrida.Under Create Hybrid Connection, enter a value for the hybrid connection name. Lasciare gli altri valori predefiniti.Leave the other default values.

    Selezionare Nuovo

  7. Selezionare Create.Select Create.

3. Creare un'applicazione server (listener)3. Create a server application (listener)

Per ascoltare e ricevere messaggi dal servizio di inoltro, scrivere un'applicazione console Node.js.To listen and receive messages from the Relay, write a Node.js console application.

Creare un'applicazione Node.jsCreate a Node.js application

Creare un nuovo file JavaScript denominato listener.js.Create a new JavaScript file called listener.js.

Aggiungere il pacchetto NPM di inoltroAdd the Relay NPM package

Eseguire npm install hyco-ws dal prompt dei comandi di Node nella cartella del progetto.Run npm install hyco-ws from a Node command prompt in your project folder.

Scrivere codice per ricevere messaggiWrite some code to receive messages

  1. Aggiungere la costante seguente all'inizio del file listener.js.Add the following constant to the top of the listener.js file.

    const WebSocket = require('hyco-ws');
    
  2. Aggiungere le costanti seguenti al file listener.js per i dettagli della connessione ibrida.Add the following constants to the listener.js file for the hybrid connection details. Sostituire i segnaposto tra parentesi con i valori ottenuti durante la creazione della connessione ibrida.Replace the placeholders in brackets with the values you obtained when you created the hybrid connection.

    1. const ns: spazio dei nomi dell'inoltro.const ns - The Relay namespace. Assicurarsi di usare il nome completo dello spazio dei nomi, ad esempio {namespace}.servicebus.windows.net.Be sure to use the fully qualified namespace name; for example, {namespace}.servicebus.windows.net.
    2. const path: nome della connessione ibrida.const path - The name of the hybrid connection.
    3. const keyrule: nome della chiave di firma di accesso condiviso.const keyrule - The name of the SAS key.
    4. const key: valore della chiave di firma di accesso condiviso.const key - The SAS key value.
  3. Aggiungere il codice seguente al file listener.js:Add the following code to the listener.js file:

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

    Il file listener.js sarà simile al seguente:Here is what your listener.js file should look like:

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

4. Creare un'applicazione client (mittente)4. Create a client application (sender)

Per inviare messaggi al servizio di inoltro, scrivere un'applicazione console Node.js.To send messages to the Relay, write a Node.js console application.

Creare un'applicazione Node.jsCreate a Node.js application

Creare un nuovo file JavaScript denominato sender.js.Create a new JavaScript file called sender.js.

Aggiungere il pacchetto NPM di inoltroAdd the Relay NPM package

Eseguire npm install hyco-ws dal prompt dei comandi di Node nella cartella del progetto.Run npm install hyco-ws from a Node command prompt in your project folder.

Scrivere codice per inviare messaggiWrite some code to send messages

  1. Aggiungere il valore constants seguente alla parte iniziale del file sender.js.Add the following constants to the top of the sender.js file.

    const WebSocket = require('hyco-ws');
    const readline = require('readline')
        .createInterface({
            input: process.stdin,
            output: process.stdout
        });;
    
  2. Aggiungere le costanti seguenti al file sender.js per i dettagli della connessione ibrida.Add the following constants to the sender.js file for the hybrid connection details. Sostituire i segnaposto tra parentesi con i valori ottenuti durante la creazione della connessione ibrida.Replace the placeholders in brackets with the values you obtained when you created the hybrid connection.

    1. const ns: spazio dei nomi dell'inoltro.const ns - The Relay namespace. Assicurarsi di usare il nome completo dello spazio dei nomi, ad esempio {namespace}.servicebus.windows.net.Be sure to use the fully qualified namespace name; for example, {namespace}.servicebus.windows.net.
    2. const path: nome della connessione ibrida.const path - The name of the hybrid connection.
    3. const keyrule: nome della chiave di firma di accesso condiviso.const keyrule - The name of the SAS key.
    4. const key: valore della chiave di firma di accesso condiviso.const key - The SAS key value.
  3. Aggiungere il codice seguente al file sender.js:Add the following code to the sender.js file:

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

    Il file sender.js sarà simile al seguente:Here is what your sender.js file should look like:

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

5. Eseguire le applicazioni5. Run the applications

  1. Eseguire l'applicazione server digitando node listener.js al prompt dei comandi Node.js.Run the server application: from a Node.js command prompt type node listener.js.
  2. Eseguire l'applicazione client digitando node sender.js al prompt dei comandi Node.js e immettendo testo.Run the client application: from a Node.js command prompt type node sender.js, and enter some text.
  3. Assicurarsi che la console dell'applicazione server restituisca il testo immesso nell'applicazione client.Ensure that the server application console outputs the text that was entered in the client application.

applicazioni in esecuzione

A questo punto è stata creata un'applicazione per le connessioni ibride end-to-end con Node.js.Congratulations, you have created an end-to-end Hybrid Connections application using Node.js!

Passaggi successiviNext steps