> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Concentrador de SignalR de mensajes en tiempo real

> Conecte los clientes de Lobby y Matchmaking de PlayFab al concentrador de SignalR de mensajes en tiempo real, incluida la configuración de HubConnection, la codificación MsgPack y los intervalos de KeepAlive.

<Note>
  Las API de REST y SignalR documentadas aquí son más complejas que los SDK de cliente. Considere la posibilidad de usar el [SDK de C++ de Lobby](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pflobby/pflobby_members) o el [SDK de C++ de Matchmaking](/services/playfab/multiplayer/lobby/playfabmultiplayerreference-cpp/pfmatchmaking/pfmatchmaking_members) en su lugar, a menos que esos SDK no satisfagan sus necesidades.
</Note>

La característica de mensajes en tiempo real de los [servicios de Lobby y
Matchmaking](/services/playfab/multiplayer/lobby/lobby-and-matchmaking) funciona a través de un
[servicio de SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr), que expone
un [concentrador de SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/introduction#hubs). Los clientes
del juego pueden usar este concentrador de SignalR para recibir mensajes sobre los [recursos
a los que se han suscrito](/services/playfab/multiplayer/real-time-messages/subscribing-to-resources).

## Conexión al concentrador de SignalR

El primer paso para recibir mensajes en tiempo real es crear un [cliente de
SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/client-features). El
cliente puede crear una conexión con el concentrador de SignalR [creando una instancia de
HubConnection](https://learn.microsoft.com/en-us/aspnet/core/signalr/dotnet-client#connect-to-a-hub)
con la siguiente API: [API de REST SignalR
Negotiate](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/pub-sub/negotiate).
Esta API implementa la API Negotiate descrita [en la documentación de
SignalR](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/TransportProtocols.md#post-endpoint-basenegotiate-request).

<Warning>
  Se recomienda encarecidamente usar la [codificación MessagePack (MsgPack)](https://github.com/dotnet/aspnetcore/blob/main/src/SignalR/docs/specs/HubProtocol.md#messagepack-msgpack-encoding) al conectarse al concentrador de SignalR, y en el futuro se aplicará como la única codificación admitida.
</Warning>

<Info>
  El cliente **debe** establecer `KeepAliveInterval` en **5 segundos** al compilar la `HubConnection`. El servicio back-end agotará el tiempo de espera y cerrará las conexiones que no reciban un ping de mantenimiento de conexión en un plazo de **10 segundos**. El valor predeterminado de `KeepAliveInterval` de SignalR, de 15 segundos, es demasiado lento y provocará desconexiones. `csharp var connection = new HubConnectionBuilder() .WithUrl(hubUrl, options => { /* auth headers */ }) .WithKeepAliveInterval(TimeSpan.FromSeconds(5)) .Build(); ` Para obtener más detalles sobre la configuración del cliente de SignalR, consulte la [documentación de configuración de SignalR](https://learn.microsoft.com/en-us/aspnet/core/signalr/configuration#configure-client-options).
</Info>

<Note>
  1. Las implementaciones de cliente de SignalR esperan que la dirección URL omita la parte `/negotiate` de esta ruta (por ejemplo, la HubConnection se debe crear con una dirección URL que termine en `...playfabapi.com/pubsub`). 1. Los encabezados de autenticación necesarios para llamar a esta API se pueden pasar al cliente de SignalR mediante `HttpConnectionOptions`, como [se ve en este método](https://learn.microsoft.com/en-us/dotnet/api/microsoft.aspnetcore.signalr.client.hubconnectionbuilderhttpextensions.withurl#microsoft-aspnetcore-signalr-client-hubconnectionbuilderhttpextensions-withurl\(microsoft-aspnetcore-signalr-client-ihubconnectionbuilder-system-string-system-action\(\(microsoft-aspnetcore-http-connections-client-httpconnectionoptions\)\)\)).
</Note>

## Implementación de métodos de cliente para recibir mensajes

Consulte la [documentación del cliente de SignalR sobre la implementación de métodos
de cliente](https://learn.microsoft.com/en-us/aspnet/core/signalr/dotnet-client#call-client-methods-from-hub)
que se invocarán para recibir mensajes. Los clientes deben implementar todos los
métodos enumerados en [Métodos de cliente](#client-methods) a continuación.

## Inicio y finalización de una sesión mediante llamadas a métodos de servidor

Consulte la [documentación del cliente de SignalR sobre cómo llamar a métodos de
servidor](https://learn.microsoft.com/en-us/aspnet/core/signalr/dotnet-client#call-hub-methods-from-client)
para administrar su sesión. Por ejemplo, una vez conectado al concentrador, debe llamar a
[StartOrRecoverSession](/services/playfab/multiplayer/real-time-messages/server-methods/start-or-recover-session) para recibir un
`connection handle` que puede usar para [suscribirse a
recursos](/services/playfab/multiplayer/real-time-messages/subscribing-to-resources). Del mismo modo, cuando haya terminado con la
sesión, llame a [EndSession](/services/playfab/multiplayer/real-time-messages/server-methods/end-session).

## Suscripción a recursos

Una vez iniciada una sesión con
[StartOrRecoverSession](/services/playfab/multiplayer/real-time-messages/server-methods/start-or-recover-session), puede usar
el `connection handle` devuelto para empezar a [suscribirse a
recursos](/services/playfab/multiplayer/real-time-messages/subscribing-to-resources) y recibir mensajes.

## API

### Métodos de cliente

| Nombre                                                                                                                                  | Descripción                                                                               |
| --------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------- |
| [ReceiveMessage](/services/playfab/multiplayer/real-time-messages/client-methods/receive-message)                                       | Recibe un mensaje.                                                                        |
| [ReceiveSubscriptionChangeMessage](/services/playfab/multiplayer/real-time-messages/client-methods/receive-subscription-change-message) | Recibe un SubscriptionChangeMessage para hacer seguimiento de las suscripciones actuales. |

### Métodos de servidor

| Nombre                                                                                                            | Descripción                   |
| ----------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| [StartOrRecoverSession](/services/playfab/multiplayer/real-time-messages/server-methods/start-or-recover-session) | Inicia o recupera una sesión. |
| [EndSession](/services/playfab/multiplayer/real-time-messages/server-methods/end-session)                         | Finaliza la sesión.           |

#### Métodos de sesión compartida

| Nombre                                                                                                                | Descripción                                                                                                                                                                                                      |
| --------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [AddEntityToSession](/services/playfab/multiplayer/real-time-messages/server-methods/add-entity-to-session)           | Para escenarios en los que varias entidades han iniciado sesión en el mismo dispositivo. Agrega una entidad adicional a la sesión, para recibir mensajes para varias entidades locales en una sesión compartida. |
| [RemoveEntityFromSession](/services/playfab/multiplayer/real-time-messages/server-methods/remove-entity-from-session) | Quita una entidad de la sesión.                                                                                                                                                                                  |

## Consulte también

* [Suscripción a recursos](/services/playfab/multiplayer/real-time-messages/subscribing-to-resources)
* [Mensajes en tiempo real para las API de Lobby y Matchmaking](/services/playfab/multiplayer/real-time-messages/overview)


## Related topics

- [Método de servidor de SignalR EndSession](/es/services/playfab/multiplayer/real-time-messages/server-methods/end-session.md)
- [Tipo de mensajes en tiempo real Message](/es/services/playfab/multiplayer/real-time-messages/types/message.md)
- [Método de cliente de SignalR ReceiveMessage](/es/services/playfab/multiplayer/real-time-messages/client-methods/receive-message.md)
- [Método de servidor de SignalR StartOrRecoverSession](/es/services/playfab/multiplayer/real-time-messages/server-methods/start-or-recover-session.md)
- [Método de servidor de SignalR AddEntityToSession](/es/services/playfab/multiplayer/real-time-messages/server-methods/add-entity-to-session.md)
