Inicio rápido: Difusión de mensajes en tiempo real desde la aplicación de consola
Azure SignalR Service proporciona la API de REST para admitir escenarios de comunicación de servidor a cliente, como la difusión. Puede elegir cualquier lenguaje de programación que pueda realizar llamadas a la API de REST. Puede publicar mensajes en todos los clientes conectados, en un cliente específico por el nombre o en un grupo de clientes.
En este inicio rápido, aprenderá a enviar mensajes desde una aplicación de línea de comandos a aplicaciones cliente conectadas en C#.
Requisitos previos
Esta guía de inicio rápido se puede ejecutar en macOS, Windows o Linux.
- SDK de .NET Core
- El editor de texto o de código que elija.
Si no tiene una suscripción a Azure, cree una cuenta gratuita de Azure antes de empezar.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Inicio de sesión en Azure
Inicie sesión en Azure Portal con su cuenta de Azure.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
En esta sección, creará una instancia básica de Azure SignalR que se usará para la aplicación. En los pasos siguientes se usa Azure Portal para crear una instancia, pero también puede usar la CLI de Azure. Para obtener más información, vea el comando az signalr create en la referencia de la CLI de Azure SignalR Service.
- Inicie sesión en Azure Portal.
- En la parte superior izquierda de la página, seleccione + Crear un recurso.
- En la página Crear un recurso, en el cuadro de texto Search services and marketplace (Servicios de búsqueda y Marketplace), escriba signalr y, después, seleccione SignalR Service en la lista.
- En la página SignalR Service, seleccione Crear.
- En la pestaña Aspectos básicos, escriba la información esencial para la nueva instancia de SignalR Service. Escriba los siguientes valores:
Campo | Valor sugerido | Descripción |
---|---|---|
Suscripción | Elija una suscripción | Seleccione la suscripción que quiere usar para crear una instancia de SignalR Service. |
Grupos de recursos | Cree un grupo de recursos denominado SignalRTestResources | Seleccione o cree un grupo de recursos para el recurso SignalR. Es útil crear un grupo de recursos para este tutorial en lugar de usar un grupo de recursos existente. Para liberar recursos después de completar el tutorial, elimine el grupo de recursos. Al eliminar un grupo de recursos también se eliminarán todos los recursos que pertenezcan a él. Esta acción no se puede deshacer. Antes de eliminar un grupo de recursos, asegúrese de que no incluye los recursos que quiere conservar. Para obtener más información, consulte Uso de grupos de recursos para administrar los recursos de Azure. |
Nombre del recurso | testsignalr | Escriba un nombre de recurso único para usarlo en el recurso SignalR. Si testsignalr ya se ha usado en la región, agregue un dígito o carácter hasta que el nombre sea único. El nombre debe ser una cadena de entre 1 y 63 caracteres y solo puede contener números, letras y el carácter de guion ( - ). El nombre no puede empezar ni terminar con el carácter de guion y no se pueden usar varios guiones consecutivos. |
Región | Elija la región. | Seleccione la región adecuada para la nueva instancia de SignalR Service. Azure SignalR Service no está disponible actualmente en todas las regiones. Para obtener más información, vea Disponibilidad en regiones para Azure SignalR Service. |
Plan de tarifa | Seleccione Cambiar y luego elija Free (Dev/Test Only) (Gratis (solo desarrollo/pruebas)). Elija Seleccionar para confirmar el plan de tarifa que elija. | Azure SignalR Service tiene tres planes de tarifa: Gratis, Estándar y Premium. Los tutoriales usan el nivel Gratis, a menos que se indique lo contrario en los requisitos previos. Para obtener más información sobre las diferencias de función entre los niveles y los precios, vea Precios de Azure SignalR Service. |
Modo de servicio | Elección del modo de servicio adecuado | Utilice Predeterminado cuando aloje la lógica del concentrador SignalR en sus aplicaciones web y utilice el servicio SignalR como proxy. Use Sin servidor cuando use tecnologías sin servidor, como Azure Functions, para hospedar la lógica del centro de SignalR. El modo Clásico solo es para la compatibilidad con versiones anteriores y no se recomienda su uso. Para obtener más información, vea Modo de servicio en Azure SignalR Service. |
No es necesario cambiar la configuración en las pestañas Redes y Etiquetas de los tutoriales de SignalR.
- Seleccione el botón Revisar y crear de la parte inferior de la pestaña Aspectos básicos.
- En la pestaña Revisar y crear, revise los valores y luego seleccione Crear. La implementación tarda unos minutos en completarse.
- Cuando se complete la implementación, seleccione el botón Ir al grupo de recursos.
- En la página de recursos de SignalR, seleccione Claves en el menú de la izquierda, en Configuración.
- Copie la cadena de conexión de la clave principal. Necesita esta cadena de conexión para configurar la aplicación más adelante en este tutorial.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Clonación de la aplicación de ejemplo
Mientras se implementa el servicio, vamos a preparar el código. Primero clone la aplicación de ejemplo desde GitHub. A continuación, establezca la cadena de conexión de SignalR Service a la aplicación. Después, ejecute la aplicación en forma local.
Abra una ventana de terminal de GIT. Cambie a la carpeta donde quiere clonar el proyecto de ejemplo.
Ejecute el comando siguiente para clonar el repositorio de ejemplo. Este comando crea una copia de la aplicación de ejemplo en el equipo.
git clone https://github.com/aspnet/AzureSignalR-samples.git
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Compilación y ejecución del ejemplo
Este ejemplo es una aplicación de consola que muestra el uso del servicio Azure SignalR. Proporciona dos modos:
- Modo de servidor: use comandos simples para llamar a la API de REST del servicio Azure SignalR.
- Modo de cliente: conéctese al servicio Azure SignalR y reciba mensajes del servidor.
También aprenderá a generar un token de acceso para autenticarse con Azure SignalR Service.
Compilación del archivo ejecutable
Se usa macOS osx.10.13-x64 como ejemplo. Puede encontrar una referencia sobre cómo compilar en otras plataformas.
cd AzureSignalR-samples/samples/Serverless/
dotnet publish -c Release -r osx.10.13-x64
Inicio de un cliente
cd bin/Release/netcoreapp2.1/osx.10.13-x64/
Serverless client <ClientName> -c "<ConnectionString>" -h <HubName>
Inicio de un servidor
cd bin/Release/netcoreapp2.1/osx.10.13-x64/
Serverless server -c "<ConnectionString>" -h <HubName>
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Ejecución del ejemplo sin publicar
También puede ejecutar el siguiente comando para iniciar un servidor o un cliente
# Start a server
dotnet run -- server -c "<ConnectionString>" -h <HubName>
# Start a client
dotnet run -- client <ClientName> -c "<ConnectionString>" -h <HubName>
Uso de los secretos de usuario para especificar la cadena de conexión
Puede ejecutar dotnet user-secrets set Azure:SignalR:ConnectionString "<ConnectionString>"
en el directorio raíz del ejemplo. Después de eso, ya no necesitará la opción -c "<ConnectionString>"
.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Uso
Una vez iniciado el servidor, use el comando para enviar el mensaje:
send user <User Id>
send users <User List>
send group <Group Name>
send groups <Group List>
broadcast
Puede iniciar a varios clientes con nombres de cliente diferentes.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Integración de con servicios que no son de Microsoft
El servicio Azure SignalR permite que los servicios que no son de Microsoft se integren con el sistema.
Definición de las especificaciones técnicas
En la siguiente tabla se muestran todas las versiones de las API REST admitidas hasta la fecha. También hay un archivo de definición disponible para cada versión
Versión | Estado de la API | Puerta | Específico |
---|---|---|---|
1.0-preview |
Disponible | 5002 | Swagger |
1.0 |
Disponible | Estándar | Swagger |
La lista de las API disponibles para cada versión específica está disponible en la siguiente lista.
API | 1.0-preview | 1.0 |
---|---|---|
Difusión a todos | ✓ | ✓ |
Difusión a un grupo | ✓ | ✓ |
Difusión a varios grupos | ✓ (En desuso) | N / A |
Envío a un usuario | ✓ | ✓ |
Envío a algunos usuarios | ✓ (En desuso) | N / A |
Incorporación de un usuario a un grupo | N / A |
✓ |
Eliminación de un usuario de un grupo | N / A |
✓ |
Comprobación de la existencia del usuario | N / A |
✓ |
Eliminación de un usuario de todos los grupos | N / A |
✓ |
Envío de una conexión | N / A |
✓ |
Adición de una conexión a un grupo | N / A |
✓ |
Eliminación de una conexión de un grupo | N / A |
✓ |
Cierre de una conexión de cliente | N / A |
✓ |
Service Health | N / A |
✓ |
Difusión a todos
Versión | Método HTTP de API | URL de la solicitud | Cuerpo de la solicitud |
---|---|---|---|
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": [...]} |
Difusión a un grupo
Versión | Método HTTP de API | URL de la solicitud | Cuerpo de la solicitud |
---|---|---|---|
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": [...]} |
Envío a un usuario
Versión | Método HTTP de API | URL de la solicitud | Cuerpo de la solicitud |
---|---|---|---|
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": [...]} |
Incorporación de un usuario a un grupo
Versión | Método HTTP de API | URL de la solicitud |
---|---|---|
1.0 |
PUT |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id> |
Eliminación de un usuario de un grupo
Versión | Método HTTP de API | URL de la solicitud |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/groups/<group-name>/users/<user-id> |
Comprobación de la existencia de usuarios en un grupo
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
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> |
Código de estado de respuesta | Descripción |
---|---|
200 |
El usuario existe |
404 |
El usuario no existe |
Eliminación de un usuario de todos los grupos
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
1.0 |
DELETE |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/users/<user-id>/groups |
Envío de un mensaje a una conexión
Versión de API | Método HTTP de API | URL de la solicitud | Cuerpo de la solicitud |
---|---|---|---|
1.0 |
POST |
https://<instance-name>.service.signalr.net/api/v1/hubs/<hub-name>/connections/<connection-id> |
{ "target":"<method-name>", "arguments":[ ... ] } |
Adición de una conexión a un grupo
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
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> |
Eliminación de una conexión de un grupo
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
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> |
Cierre de una conexión de cliente
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
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> |
Service Health
Versión de API | Método HTTP de API | URL de la solicitud |
---|---|---|
1.0 |
GET |
https://<instance-name>.service.signalr.net/api/v1/health |
Código de estado de respuesta | Descripción |
---|---|
200 |
Servicio en buen estado |
5xx |
Error del servicio |
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Limpieza de recursos
Si no va a seguir usando esta aplicación, siga estos pasos para eliminar todos los recursos creados en esta guía de inicio rápido a fin de que no se le apliquen cargos adicionales:
En Azure Portal, seleccione Grupos de recursos en el extremo izquierdo y luego seleccione el grupo de recursos que creó. Además, puede usar el cuadro de búsqueda para buscar el grupo de recursos por su nombre.
En la ventana que se abrirá, seleccione el grupo de recursos y luego haga clic en Eliminar grupo de recursos.
En la nueva ventana escriba el nombre del grupo de recursos que quiere eliminar y, después, haga clic en Eliminar.
¿Tiene problemas? Consulte la guía de solución de problemas o póngase en contacto con nosotros.
Pasos siguientes
En este inicio rápido, aprendió a usar la API de REST para difundir mensajes en tiempo real de SignalR Service a los clientes. A continuación, obtendrá información sobre cómo desarrollar e implementar Azure Functions con enlaces de SignalR Service, que se basa en la API de REST.