Compartir vía


Cómo conectarse a un grupo del mismo nivel

En este tema se describe cómo se conecta una aplicación a un grupo del mismo nivel mediante las API de agrupación de emparejamiento.

Unión a un grupo del mismo nivel

Para unirse a un grupo del mismo nivel, llame a PeerGroupJoin, pasando el nombre de identidad del mismo nivel y la invitación (y un nombre de nube PNRP opcional, si el nombre de la nube en la invitación es ambiguo).

Si se ejecuta correctamente, PeerGroupJoin devuelve un identificador al grupo del mismo nivel.

Si el elemento del mismo nivel se ha unido previamente al grupo del mismo nivel y, a continuación, ha cerrado el identificador, el grupo del mismo nivel se debe volver a abrir llamando a PeerGroupOpen y pasando el nombre del grupo del mismo nivel. Esta llamada devuelve un nuevo identificador de grupo del mismo nivel.

Una vez que el grupo del mismo nivel se ha unido correctamente, el mismo nivel puede conectarse directamente al grupo del mismo nivel y empezar a interactuar llamando a PeerGroupConnect. Después de conectarse, el elemento del mismo nivel se considera "en línea".

Si una aplicación no interactuará con el grupo en el momento, puede permanecer "sin conexión". Si decide participar directamente en el grupo del mismo nivel en una instancia posterior, una llamada posterior a PeerGroupConnect lo pondrá en línea. Una vez que un elemento del mismo nivel se ha unido al grupo del mismo nivel, debe conectarse al menos una vez antes de poder publicar registros en el grupo del mismo nivel.

Abrir un grupo del mismo nivel sin conectarse (sin conexión)

A menudo, es posible que desee que una aplicación se conecte a un grupo del mismo nivel, pero no participe directamente en él, recibiendo y publicando actualizaciones de registros, pero no enviando o recibiendo mensajes de datos. Una aplicación está en este estado "sin conexión" inmediatamente después de llamar a PeerGroupCreate, PeerGroupJoin o PeerGroupOpen .

Una aplicación sin conexión puede conectarse en cualquier momento llamando a PeerGroupConnect. Una vez conectado, un grupo del mismo nivel no puede estar sin conexión hasta que todas las demás aplicaciones asociadas a esta identidad y compartir este grupo también tienen conexiones cerradas.

Un grupo del mismo nivel es un recurso compartido, con el mismo grupo del mismo nivel disponible para varias aplicaciones. Si más de una aplicación para la misma identidad y el usuario de Windows usa el mismo grupo del mismo nivel, también comparten la misma base de datos y conexiones subyacentes (vecino y directo). Si alguna de estas aplicaciones llama a PeerGroupConnect, todas las demás aplicaciones para esta identidad o usuario que participa en el grupo también se conectan al grupo. Si una aplicación agrega un registro mientras el grupo está sin conexión, otras aplicaciones también pueden verlo. Como resultado, una aplicación debe estar lista para conectarse en cualquier momento.

Conexión a un grupo del mismo nivel (en línea)

Para empezar a participar en un grupo, llame a PeerGroupConnect después de crear, unir o abrir el grupo. En este estado, las conexiones directas se pueden abrir con otros elementos del mismo nivel que participan en el mismo grupo llamando a PeerGroupOpenDirectConnection.

Para detectar si se ha producido un error en un intento de conexión, regístrese para el evento PEER_GROUP_EVENT_CONNECTION_FAILED. Este evento se genera si la infraestructura de agrupación no encuentra otro miembro al que conectarse, o si se produce un error en la conexión antes de que se sincronice la base de datos de grupo y no se pueda establecer otra conexión.

Aunque varias aplicaciones que se ejecutan en el mismo nivel y participan en el mismo grupo con la misma identidad del mismo nivel pueden estar sin conexión, una llamada a PeerGroupConnect por parte de cualquiera de las aplicaciones da como resultado que todas las aplicaciones se vuelvan en línea.

Además, si una aplicación del mismo nivel está conectada al grupo, cualquier otra aplicación que llame a PeerGroupJoin o PeerGroupOpen también esté conectada inmediatamente. Si una aplicación llama a PeerGroupClose, el identificador se cierra solo para esa aplicación. Por lo tanto, una llamada posterior a PeerGroupOpen por la aplicación devuelve un nuevo identificador de grupo y la aplicación se pone en línea inmediatamente si otras aplicaciones que participan en el mismo grupo siguen conectados.

Envío y recepción de datos

Para enviar y recibir datos entre nodos miembros específicos del grupo, se deben establecer conexiones directas con los miembros con los que pretende interactuar. Establecer una conexión directa es una llamada asincrónica a PeerGroupOpenDirectConnection, pasando el identificador de un grupo conectado, así como la identidad del mismo nivel dentro del grupo al que desea conectarse. Este método devolverá un identificador de conexión. Si la llamada se realiza correctamente, se genera un evento de PEER_GROUP_EVENT_DIRECT_CONNECTION en el mismo nivel, validando el identificador de conexión.

Para recibir conexiones directas de otros sistemas del mismo nivel en línea, regístrese para el evento de PEER_GROUP_EVENT_DIRECT_CONNECTION con una llamada a PeerGroupRegisterEvent.

Una vez establecida correctamente una conexión directa, la aplicación puede empezar a enviar datos con llamadas a PeerGroupSendData, pasando el identificador de conexión válido. PeerGroupSendData controla el orden de las transmisiones de datos de varias partes. Sin embargo, las aplicaciones deben implementar una pila de protocolos adecuada para controlar los datos opacos devueltos por esta llamada API.

Para recibir datos a través de una conexión directa, la aplicación debe registrarse para el evento PEER_GROUP_EVENT_INCOMING_DATA con PeerGroupRegisterEvent. El controlador de eventos es responsable de obtener y ordenar los datos opacos y pasarlos a la aplicación. Estos datos se obtienen en el controlador de eventos llamando a PeerGroupGetEventData con el identificador de los eventos registrados.

Una conexión directa se cierra llamando a PeerGroupCloseDirectConnection y pasando el identificador de conexión obtenido por una llamada anterior a PeerGroupOpenDirectConnection o recibido en los datos de evento para PEER_EVENT_GROUP_DIRECT_CONNECTION.