Абонент будет получать контент только с момента его подписки на узел, и все старое содержимое, опубликованное издателем, не будет получено подписчиком. Это верно? Могу ли я узнать, что мне нужно сделать, чтобы абонент получил все предыдущие старые материалы?xmpp понимание pubsub
1
A
ответ
4
Вы можете настроить свои узлы на постоянство или переход. Согласно specifictaion (XEP-0060):
Является ли узел постоянным или временным, определяется поле конфигурации «pubsub # persist_items».
Однако ваш сервис pubsub (или сервер) может быть настроен так, чтобы игнорировать постоянство событий. (Если вы используете Openfire, я думаю, что есть конфигурируемый предел для максимального общего размера хранимых вещей)
Как я знаю, что вы используете smackx-pubsub, вот некоторый код:
// 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: Может вы говорите мне, почему я чувствую, что здесь мы делаем пару программ? ;)
Вы будете полезны: \ – cometta
@cometta и @sfussenegger - Вы оставили это, чтобы получить старые предметы, вам нужно выполнить node.getItems(). Кроме того, вместо версии github вы должны создать Smack из своего источника (http://www.igniterealtime.org/downloads/source.jsp), чтобы получить последнюю версию кода pubsub. – Robin
@ Robin так pubsub, наконец, выходит из коробки? начиная с версии 3.2? – sfussenegger