Guida introduttiva: trasmissione in tempo reale di messaggi dall'app console
Il servizio Azure SignalR fornisce l'API REST per supportare scenari di comunicazione da server a client, ad esempio la trasmissione. È possibile scegliere qualsiasi linguaggio di programmazione che possa effettuare chiamate all'API REST. È possibile inviare messaggi a tutti i client connessi, a un client specifico in base al nome o a un gruppo di client.
In questa guida introduttiva si apprende come inviare messaggi da un'app da riga di comando alle app client connesse in C#.
Importante
Le stringa di connessione non elaborate vengono visualizzate in questo articolo solo a scopo dimostrativo.
Un stringa di connessione include le informazioni di autorizzazione necessarie per consentire all'applicazione di accedere alle Servizio Azure SignalR. La chiave di accesso all'interno della stringa di connessione è simile a una password radice per il servizio. Negli ambienti di produzione proteggere sempre le chiavi di accesso. Usare Azure Key Vault per gestire e ruotare le chiavi in modo sicuro e proteggere i stringa di connessione usando Microsoft Entra ID e autorizzare l'accesso con Microsoft Entra ID.
Evitare di distribuire le chiavi di accesso ad altri utenti, impostarle come hardcoded o salvarle in un file di testo normale accessibile ad altri. Ruotare le chiavi se si ritiene che siano state compromesse.
Prerequisiti
Questa guida introduttiva può essere eseguita su macOS, Windows o Linux.
- ASP.NET Core SDK
- Un editor di testo o editor di codice di propria scelta.
Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Accedere ad Azure
Accedere al portale di Azure con l'account di Azure.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
In questa sezione viene creata un'istanza di Azure SignalR di base da usare per l'app. I passaggi seguenti usano il portale di Azure per creare una nuova istanza, ma è anche possibile usare l'interfaccia della riga di comando di Azure. Per altre informazioni, vedere il comando az signalr create in Informazioni di riferimento sull'interfaccia della riga di comando per il Servizio Azure SignalR.
- Accedere al portale di Azure.
- Nell'angolo in alto a sinistra della pagina selezionare + Crea una risorsa.
- Nella casella di testo Servizi di ricerca e marketplace della pagina Crea una risorsa immettere signalr e quindi selezionare Servizio SignalR dall'elenco.
- Nella pagina Servizio SignalR selezionare Crea.
- Nella scheda Informazioni di base immettere le informazioni essenziali per la nuova istanza del servizio SignalR. Immettere i valori seguenti:
Campo | Valore consigliato | Descrizione |
---|---|---|
Abbonamento | Scegliere la sottoscrizione in uso | Selezionare la sottoscrizione da usare per creare una nuova istanza del servizio SignalR. |
Gruppo di risorse | Creare un gruppo di risorse denominato SignalRTestResources | Selezionare o creare un gruppo di risorse per la risorsa SignalR. È utile creare un nuovo gruppo di risorse per questa esercitazione anziché usare un gruppo di risorse esistente. Per liberare risorse dopo aver completato l'esercitazione, eliminare il gruppo di risorse. L'eliminazione di un gruppo di risorse elimina anche tutte le risorse che appartengono al gruppo. Non è possibile annullare questa azione. Prima di eliminare un gruppo di risorse, assicurarsi che non contenga risorse da conservare. Per altre informazioni, vedere Using resource groups to manage your Azure resources (Uso di Gruppi di risorse per gestire le risorse di Azure). |
Nome risorsa | testsignalr | Immettere un nome risorsa univoco da usare per la risorsa SignalR. Se testsignalr è già in uso nell'area, aggiungere una cifra o un carattere fino a quando il nome non è univoco. Il nome deve essere una stringa contenente da 1 a 63 caratteri che possono includere solo numeri, lettere e il segno meno ( - ). Il nome non può iniziare o terminare con un trattino e non sono consentiti più trattini consecutivi. |
Area | Scegli la tua area geografica | Selezionare l'area appropriata per la nuova istanza del servizio SignalR. Il Servizio Azure SignalR non è attualmente disponibile in tutte le aree. Per altre informazioni, vedere Disponibilità del Servizio Azure SignalR a livello di area |
Piano tariffario | Selezionare Modifica e quindi scegliere Gratuito (solo sviluppo/test). Scegliere Seleziona per confermare la scelta del piano tariffario. | Il Servizio Azure SignalR ha tre piani tariffari: Gratuito, Standard e Premium. Le esercitazioni usano il livello Gratuito, a meno che non sia specificato diversamente nei prerequisiti. Per altre informazioni sulle differenze di funzionalità tra i livelli e i prezzi, vedere Prezzi del Servizio Azure SignalR |
Modalità di servizio | Scegliere la modalità di servizio appropriata | Usare Predefinita quando si ospita la logica dell'hub SignalR nelle app Web e si usa il Servizio SignalR come proxy. Usare Serverless quando si usano tecnologie serverless come Funzioni di Azure per ospitare la logica dell'hub SignalR. La modalità Classica è disponibile solo ai fini della compatibilità con le versioni precedenti e non è consigliabile usarla. Per altre informazioni, vedere Modalità di servizio nel Servizio Azure SignalR. |
Non è necessario modificare le impostazioni nelle schede Rete e Tag per le esercitazioni su SignalR.
- Selezionare il pulsante blu Rivedi e crea nella parte inferiore della scheda Informazioni di base.
- Nella scheda Rivedi e crea rivedere i valori e quindi selezionare Crea. Il completamento della distribuzione richiede alcuni istanti.
- Dopo avere completato la distribuzione, selezionare il pulsante Vai alla risorsa.
- Nella pagina della risorsa SignalR selezionare Chiavi dal menu a sinistra, in Impostazioni.
- Copiare la Stringa di connessione per la chiave primaria. Questa stringa di connessione è necessaria per configurare l'app più avanti in questa esercitazione.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Clonare l'applicazione di esempio
Durante la distribuzione del servizio è possibile preparare il codice. Prima di tutto, clonare l'app di esempio da GitHub. Impostare quindi la stringa di connessione del Servizio SignalR sull'app. Eseguire infine l'applicazione in locale.
Aprire una finestra del terminale Git. Passare a una cartella in cui si vuole clonare il progetto di esempio.
Eseguire il comando seguente per clonare l'archivio di esempio. Questo comando crea una copia dell'app di esempio nel computer in uso.
git clone https://github.com/aspnet/AzureSignalR-samples.git
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Compilare ed eseguire l'esempio
Questo esempio è un'app console che illustra l'uso del servizio Azure SignalR. Fornisce due modalità:
- Modalità server: uso di semplici comandi per chiamare l'API REST del servizio Azure SignalR.
- Modalità client: connessione al servizio Azure SignalR e ricezione di messaggi dal server.
Si apprende anche come generare un token di accesso per l'autenticazione con il Servizio Azure SignalR.
Creare il file eseguibile
Viene usato macOS osx.10.13-x64 come esempio. È possibile trovare i riferimenti sulla compilazione in altre piattaforme.
cd AzureSignalR-samples/samples/Serverless/
dotnet publish -c Release -r osx.10.13-x64
Avviare un client
Le stringa di connessione non elaborate vengono visualizzate in questo articolo solo a scopo dimostrativo. Negli ambienti di produzione proteggere sempre le chiavi di accesso. Usare Azure Key Vault per gestire e ruotare le chiavi in modo sicuro e proteggere i stringa di connessione usando Microsoft Entra ID e autorizzare l'accesso con Microsoft Entra ID.
cd bin/Release/netcoreapp2.1/osx.10.13-x64/
Serverless client <ClientName> -c "<ConnectionString>" -h <HubName>
Avviare un server
cd bin/Release/netcoreapp2.1/osx.10.13-x64/
Serverless server -c "<ConnectionString>" -h <HubName>
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Eseguire l'esempio senza eseguire la pubblicazione
È anche possibile eseguire il comando seguente per avviare un server o un client
# Start a server
dotnet run -- server -c "<ConnectionString>" -h <HubName>
# Start a client
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>
Usare segreti utente per specificare la stringa di connessione
È possibile eseguire dotnet user-secrets set Azure:SignalR:ConnectionString "<ConnectionString>"
nella directory radice dell'esempio. Successivamente, non è più necessaria l'opzione -c "<ConnectionString>"
.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Utilizzo
Dopo l'avvio del server, usare il comando per inviare il messaggio:
send user <User Id>
send users <User List>
send group <Group Name>
send groups <Group List>
broadcast
È possibile avviare più client con nomi diversi.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Integrazione con servizi non Microsoft
Il Servizio Azure SignalR consente l'integrazione non Microsoft con il sistema.
Definizione delle specifiche tecniche
La tabella seguente illustra tutte le versioni delle API REST supportate fino al presente. È anche possibile trovare il file di definizione per ogni versione specifica
Versione | Stato API | Door | Specifica |
---|---|---|---|
1.0-preview |
Disponibile | 5002 | Swagger |
1.0 |
Disponibile | Standard | Swagger |
L'elenco delle API disponibili per ogni versione specifica è disponibile nell'elenco seguente.
API | 1.0-preview | 1.0 |
---|---|---|
Trasmettere a tutti | ✓ | ✓ |
Trasmettere a un gruppo | ✓ | ✓ |
Trasmettere ad alcuni gruppi | ✓ (deprecato) | N / A |
Inviare a un utente | ✓ | ✓ |
Inviare ad alcuni utenti | ✓ (deprecato) | N / A |
Aggiunta di un utente a un gruppo | N / A |
✓ |
Rimozione di un utente da un gruppo | N / A |
✓ |
Verificare l'esistenza dell'utente | N / A |
✓ |
Rimuovere un utente da tutti i gruppi | N / A |
✓ |
Inviare a una connessione | N / A |
✓ |
Aggiungere una connessione a un gruppo | N / A |
✓ |
Rimuovere una connessione da un gruppo | N / A |
✓ |
Chiudere una connessione client | N / A |
✓ |
Integrità dei servizi | N / A |
✓ |
Trasmettere a tutti
Versione | Metodo HTTP API | Richiesta URL | Testo della richiesta |
---|---|---|---|
1.0-preview |
POST |
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name> |
{"target": "<method-name>", "arguments": [...]} |
1.0 |
POST |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name> |
{"target": "<method-name>", "arguments": [...]} |
Trasmettere a un gruppo
Versione | Metodo HTTP API | Richiesta URL | Testo della richiesta |
---|---|---|---|
1.0-preview |
POST |
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/group/<group-name> |
{"target": "<method-name>", "arguments": [...]} |
1.0 |
POST |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name> |
{"target": "<method-name>", "arguments": [...]} |
Invio a un utente
Versione | Metodo HTTP API | Richiesta URL | Testo della richiesta |
---|---|---|---|
1.0-preview |
POST |
https://<instance-name>.service.signalr.net:5002/api/v1-preview/hub/<hub-name>/user/<user-id> |
{"target": "<method-name>", "arguments": [...]} |
1.0 |
POST |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id> |
{"target": "<method-name>", "arguments": [...]} |
Aggiunta di un utente a un gruppo
Versione | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
PUT |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id> |
Rimozione di un utente da un gruppo
Versione | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id> |
Verificare l'esistenza dell'utente in un gruppo
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
GET |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups/<group-name> |
1.0 |
GET |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id> |
Codice di stato della risposta | Descrizione |
---|---|
200 |
Utente esistente |
404 |
Utente non esistente |
Rimuovere un utente da tutti i gruppi
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups |
Inviare il messaggio a una connessione
Versione dell'API | Metodo HTTP API | Richiesta URL | Corpo della richiesta |
---|---|---|---|
1.0 |
POST |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id> |
{ "target":"<method-name>", "arguments":[ ... ] } |
Aggiungere una connessione a un gruppo
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
PUT |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id> |
1.0 |
PUT |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name> |
Rimuovere una connessione da un gruppo
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/connections/<connection-id> |
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>/groups/<group-name> |
Chiudere una connessione client
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id> |
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id>?reason=<close-reason> |
Integrità del servizio
Versione dell'API | Metodo HTTP API | Richiesta URL |
---|---|---|
1.0 |
GET |
https://<instance-name>.service.signalr.net/api/v1/health |
Codice di stato della risposta | Descrizione |
---|---|
200 |
Servizio funzionante |
5xx |
Errore del servizio |
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Pulire le risorse
Se non si intende continuare a usare l'app, eliminare tutte le risorse create tramite questa guida di avvio rapido eseguendo i passaggi seguenti, per evitare qualsiasi addebito:
Nel portale di Azure selezionare Gruppi di risorse all'estrema sinistra e quindi selezionare il gruppo di risorse creato. In alternativa, è possibile usare la casella di ricerca per trovare il gruppo di risorse in base al nome.
Nella finestra che si apre selezionare il gruppo di risorse e quindi fare clic su Elimina gruppo di risorse.
Nella nuova finestra digita il nome del gruppo di risorse da eliminare e quindi fai clic su Elimina.
Problemi? Vedere la guida alla risoluzione dei problemi oppure segnalarli.
Passaggi successivi
In questa guida di avvio rapido si è imparato a usare l'API REST per trasmettere messaggi in tempo reale dal servizio SignalR ai client. Nella guida di avvio rapido successiva si apprenderà come sviluppare e distribuire Funzioni di Azure con il binding del servizio SignalR, che è basato sull'API REST.