XMPP PubSub Entendimento
Pergunta
O assinante receberá apenas conteúdo a partir do momento em que ele está inscrevendo em um nó e todo o conteúdo antigo publicado pelo editor não será recebido pelo assinante. Isso está correto? Posso saber, o que preciso fazer para que o assinante receba todo o conteúdo antigo anterior?
Solução
Você pode configurar seus nós para serem persistentes ou transitórios. De acordo com Especification (XEP-0060):
Se o nó é persistente ou transitório é determinado pelo campo de configuração "pubsub#persist_items".
No entanto, seu serviço de pubsub (ou servidor) pode ser configurado para ignorar a persistência dos eventos. (Se você está usando o OpenFire, acho que há um limite configurável para o tamanho total máximo dos itens armazenados)
Como eu sei, você está usando Smackx-Pubsub, aqui está algum código:
// create new node
pubSubManager.createNode(nodeId, newConfigureForm(persistent, includePayload, accessModel)
// change existing node
node.sendConfigurationForm(newConfigureForm(persistent, includePayload, accessModel));
private ConfigureForm newConfigureForm(final boolean persistent, final boolean includePayload, final AccessModel accessModel) {
final ConfigureForm form = new ConfigureForm(FormType.submit);
form.setPersistentItems(persistent);
form.setDeliverPayloads(includePayload);
form.setAccessModel(accessModel);
return form;
}
PS: Você pode me dizer por que tenho a sensação de que estamos fazendo uma espécie de programação de pares aqui? ;)