Mensajes y conexiones de Azure SignalR Service

El modelo de facturación de Azure SignalR Service se basa en el número de conexiones y el número de mensajes salientes del servicio. Este artículo explica cómo se definen y cuentan los mensajes y las conexiones para la facturación.

Formatos de mensajes

Azure SignalR Service admite los mismos formatos que ASP.NET Core SignalR: JSON y MessagePack.

Tamaño del mensaje

Los límites siguientes se aplican a los mensajes de Azure SignalR Service:

  • Mensajes de cliente:
    • Para eventos largos de sondeo o servidor, el cliente no puede enviar mensajes de más de 1 MB.
    • No hay ningún límite de tamaño para WebSocket para el servicio.
    • El servidor de aplicaciones puede establecer un límite para el tamaño del mensaje de cliente. El valor predeterminado es de 32 KB. Para obtener más información, vea Consideraciones de seguridad en ASP.NET Core SignalR.
    • En el caso de los sin servidor, el tamaño del mensaje está limitado por la implementación ascendente, pero se recomienda menos de 1 MB.
  • Mensajes del servidor:
    • No hay ningún límite para el tamaño del mensaje del servidor, pero se recomienda menos de 16 MB.
    • El servidor de aplicaciones puede establecer un límite para el tamaño del mensaje de cliente. El valor predeterminado es de 32 KB. Para obtener más información, vea Consideraciones de seguridad en ASP.NET Core SignalR.
    • Sin servidor:

En el caso de los clientes de WebSocket, los mensajes grandes se dividen en mensajes más pequeños que no tienen más de 2 KB cada uno y se transmiten por separado. Los SDK controlan la división y el ensamblado de los mensajes. El desarrollador no debe hacer nada.

Los mensajes grandes afectan negativamente al rendimiento de la mensajería. Use mensajes de menor tamaño siempre que sea posible y pruebe para determinar el tamaño de mensaje óptimo para cada escenario de caso de uso.

Cómo se cuentan los mensajes para la facturación

Los mensajes enviados al servicio son mensajes entrantes y los mensajes enviados fuera del servicio son mensajes salientes. Solo se cuentan los mensajes salientes de Azure SignalR Service para la facturación. Los mensajes de ping entre clientes y servidores se omiten.

Los mensajes mayores de 2 KB se cuentan como mensajes múltiples de 2 KB cada uno. El gráfico de recuento de mensajes de Azure Portal se actualiza cada 100 mensajes por centro.

Por ejemplo, suponga que tiene un servidor de aplicaciones y tres clientes:

  • Cuando el servidor de aplicaciones difunde un mensaje de 1 KB a todos los clientes conectados, el mensaje del servidor de aplicaciones al servicio se considera un mensaje de entrada gratuito. Los tres mensajes enviados desde el servicio a cada uno de los clientes son mensajes salientes y se facturan.

  • Cuando el cliente A envía un mensaje de entrada de 1 KB al cliente B, sin pasar por el servidor de aplicaciones, el mensaje es un mensaje de entrada gratuito. El mensaje enrutado desde el servicio al cliente B se factura como un mensaje saliente.

  • Si tiene tres clientes y un servidor de aplicaciones, cuando un cliente envía un mensaje de 4 KB para la difusión del servidor a todos los clientes, el recuento de mensajes facturados es ocho:

    • Un mensaje del servicio al servidor de aplicaciones.
    • Tres mensajes del servicio a los clientes. Cada mensaje se cuenta como dos mensajes de 2 KB.

Cómo se cuentan las conexiones

Azure SignalR Service crea conexiones de cliente y servidor de aplicaciones. De manera predeterminada, cada servidor de aplicaciones comienza con cinco conexiones iniciales por centro de conectividad y cada cliente tiene una conexión de cliente.

Por ejemplo, suponga que tiene dos servidores de aplicaciones y define cinco centros en el código. El recuento de conexiones de servidor es 50: (2 servidores de aplicaciones * 5 concentradores * 5 conexiones por centro).

El recuento de conexiones que se muestra en Azure Portal incluye conexiones de servidor, cliente, diagnóstico y seguimiento activo. Los tipos de conexión se definen en la siguiente lista:

  • Conexión de servidor: conecta Azure SignalR Service y el servidor de aplicaciones.
  • Conexión de cliente: conecta Azure SignalR Service y la aplicación cliente.
  • Conexión de diagnóstico: un tipo especial de conexión de cliente que puede generar un registro más detallado, lo que podría afectar al rendimiento. Este tipo de cliente está diseñado para la solución de problemas.
  • Conexión de seguimiento en directo: se conecta al punto de conexión de seguimiento activo y recibe seguimientos en directo de Azure SignalR Service.

Una conexión de seguimiento activo no se cuenta como una conexión de cliente o como una conexión de servidor.

ASP.NET SignalR calcula las conexiones de los servidores de otra forma. Incluye un centro predeterminado además de los centros que defina. De forma predeterminada, cada servidor de aplicaciones necesita cinco conexiones de los servidores. El número de conexiones iniciales del centro predeterminado se mantiene igual que el de los otros centros.

El servicio y el servidor de aplicaciones siguen sincronizando el estado de conexión y realizando ajustes en las conexiones de servidor para mejorar el rendimiento y la estabilidad del servicio. Por lo tanto, puede ver los cambios en el número de conexiones de servidor en el servicio en ejecución.