Sign inGet Started

Excluir destinatarios de eventos

Si un cliente aplica un cambio de forma optimista antes de que tu servidor lo publique, recibir el mismo evento puede aplicar el cambio dos veces. Esto puede provocar un parpadeo o un elemento duplicado.
Pasa el ID de conexión del cliente que actúa para entregar el evento a todas las demás conexiones suscritas.
await bird.realtime.publish(appId, {
  event: "message.created",
  channels: ["presence-room-1"],
  data: { body: "hello" },
  exclude_connection_id: "26896.319537",
});

Obtener el ID de conexión

El cliente lee su ID de conexión y lo envía con la solicitud que desencadena el cambio:
const bird = new BirdRealtime({ appKey: "your-app-key", region: "us1" });

await fetch("/messages", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    body: "hello",
    connection_id: bird.connection.connectionId,
  }),
});
El ID es null hasta que se establece la conexión y cambia tras una reconexión. Lee bird.connection.connectionId en el navegador o bird.connectionId en Swift y Kotlin cuando hagas la solicitud.
Pasa el valor a exclude_connection_id después de validarlo como datos de solicitud no confiables. Este campo puede suprimir la entrega a una conexión, pero no puede otorgar acceso a un evento.

Comportamiento de la conexión excluida

Solo se excluye la conexión indicada. Las demás pestañas de la misma persona usan conexiones separadas y siguen recibiendo el evento.
Excluir un ID de conexión que no está suscrito, o que ya no existe, no es un error. La publicación se entrega normalmente a todos los demás.

Cuándo omitir la exclusión

Usa la exclusión para interfaces optimistas. Si el cliente espera el evento antes de aplicar un cambio, no lo excluyas. De lo contrario, la pestaña que actúa permanece desactualizada.

Próximos pasos