Доставка сообщений, когда пользователь не в сети - PullRequest
0 голосов
/ 29 октября 2008

У меня есть плагин для OpenFire, который создает и доставляет сообщение пользователю, используя

XMPPServer.getInstance().getMessageRouter().route(message)

Я хотел бы знать, что происходит с этим сообщением, если пользователь не в сети.

Моя цель состоит в том, чтобы доставить сообщение только в том случае, если пользователь подключен к сети, и в противном случае он может быть сброшен или перенаправлен в корзину битов.

Ответы [ 2 ]

2 голосов
/ 29 октября 2008

Все зависит от конфигурации Openfire. В консоли администратора Openfire выберите Сервер -> Настройки сервера -> Автономные сообщения. Есть варианты для магазина, отказов и падения.

  • Store: доставить сообщение, когда пользователь возвращается онлайн.
  • Drop: просто отменить сообщение.
  • Bounce: отменить и уведомить отправителя сообщением возврата.
1 голос
/ 03 ноября 2008

Другой подход, если вы просто хотите, чтобы эти сообщения не отключались, не влияя на доставку других сообщений, это использовать type = 'headline'. Заголовки не очень хорошо определены, но RFC 3921bis Раздел 5.2.2 гласит:

заголовок - сообщение содержит предупреждение, уведомление или другую информацию, на которую не ожидается ответа (например, заголовки новостей, спортивные новости, рыночные данные почти в реальном времени и синдицированный контент). Поскольку никакого ответа на сообщение не ожидается, обычно принимающий клиент представляет сообщение типа «заголовок» в интерфейсе, который соответствующим образом отличает сообщение от автономных сообщений, сообщений чата или сообщений группового чата (например, не предоставляя получателю умение отвечать). Принимающему серверу СЛЕДУЕТ доставить сообщение всем доступным ресурсам получателя.

Большинство современных серверов просто молча отправляют заголовки автономным пользователям и доставляют ресурсы с наивысшим приоритетом, если пользователь подключен к сети.

...