PubNub Presencia en JavaScript


Ejemplo

La presencia funciona al enviar mensajes cuando un usuario se une, se retira o sale de un canal en particular. Puede escuchar estos mensajes para saber quién está en un canal y cuánto tiempo hace desde que hicieron algo.

En primer lugar, asegúrese de que cada usuario como UUID. Establece esto cuando inicias PubNub:

var pubnub = PUBNUB({
     publish_key: 'my_pub_key',
     subscribe_key: 'my_sub_key',
     uuid: '1234_some_uuid'
 });

Ahora, cuando se conecte a un canal, agregue una escucha adicional para eventos de join .

pubnub.subscribe({
    channel: "channel-1",
    message: function(m){console.log(m)}
    presence: onPresenceEvent,
});

onPresenceEvent = function(message, envelope, channel){
    if (!message.action) {
        // presence interval mode happens
        // when occupancy > presence announce max
        // there is no action key
        console.log("Presence Interval Mode: occupancy = " + m.occupancy);
        return;
    }

    console.log(
        "Action:    " + message.action + "\n" +
        "UUID:      " + message.uuid + "\n" +
        "Channel:   " + JSON.stringify(channel) + "\n" +
        "Occupancy: " + message.occupancy + "\n" +
        "Timestamp: " + message.timestamp);

    else if (m.action == 'join') {
        // new subscriber to channel
        // add the user to your buddy list
    }
    else if (m.action == 'leave') {
        // subscriber explicitly unsubscribed channel
        // remove user from your buddy list
    }
    else if (m.action == 'timeout') {
        // subscriber implicitly unsubscribed channel (did not unsubscribe)
        // remove user from your buddy list        
    }
    else if (m.action == 'state-change') {
        // subscriber changed state
        // update the attributes about the user in the buddy list
        // i.e. - is typing, online status, etc.
        console.log("State Data: " + JSON.stringify(message.data));
    }
};

El objeto de mensaje enviado a la devolución de llamada de presence incluirá la acción realizada (unirse, salir, tiempo de espera o cambio de estado) y el UUID del usuario que realizó la acción, así como la marca de tiempo y algunos otros metadatos.

Cuando se establece el state-change se envía un evento de state-change que incluirá el nuevo estado en la clave de data clave de message .

Nota : si tiene Access Manager habilitado, debe asegurarse de que sus subvenciones cubren tanto el canal regular como el canal de presencia. De lo contrario, cuando intente suscribirse al canal con una devolución de llamada de presencia, el SDK también lo suscribirá al canal de presencia que fallará si no ha solicitado las subvenciones. El nombre del canal de presencia es el nombre del canal regular con un sufijo "-pnpres"; lo que significa que un canal llamado "pubnub-sensor-array" tendrá un canal de presencia llamado "pubnub-sensor-array-pnpres". Consulte los ejemplos de Access Manager para obtener más información.