PubNub Grupo de canales comodín Gestionar subvención - Java SDK v4


Ejemplo

Cuando se trata de agregar / eliminar canales a / de sus grupos de canales, debe tener el permiso de manage para esos grupos de canales. Pero nunca debe otorgar a los clientes permiso para manage los grupos de canales a los que se suscribirán. Si lo hicieran, podrían agregar cualquier canal que quisieran a su grupo de canales y tener acceso de lectura instantáneo a ese canal.

Por esta razón, su servidor debe ser la única entidad que tiene el permiso de manage . Pero su servidor necesitará tener el permiso de manage para cada grupo de canales para que pueda agregar / eliminar canales a / desde grupos de canales en nombre de todos los clientes.

Pero otorgar la manage a cada grupo de canales puede ser un poco tedioso. En su lugar, puede otorgar manage a todos los grupos de canales (existentes y por crear) en una concesión de comodín .

// init PubNub instance using PNConfiguration with the secret-key
PNConfiguration pnConfiguration = new PNConfiguration();
pnConfiguration.setSubscribeKey("my_subkey")
pnConfiguration.setPublishKey("my_pubkey");
// secret key allows server to `grant` permissions
pnConfiguration.setSecretKey("my_secretkey");
pnConfiguration.setSecure(true);
// set the the server's auth key
pnConfiguration.setAuthKey("server_authkey");
PubNub pubnub = new PubNub(pnConfiguration);

// grant read and manage using the channel group wildcard - ":" 
// with forever ttl (0) 
pubNub.grant()
    .channelGroups(Arrays.asList(":")) // colon (:) is channel group wildcard
    .manage(true) // add/remove channels to/from channel groups
    .read(true) // in case server needs to subscribe or do here-now on channel groups
    .ttl(0) // 0 = forever grant
    .async(new PNCallback<PNAccessManagerGrantResult>() {
        @Override
        public void onResponse(PNAccessManagerGrantResult result, PNStatus status) {
            // check status for success or failure of grant
        }
    });

De aquí en adelante, su servidor podrá agregar / eliminar canales a / desde cualquier grupo de canales que cree su aplicación.