用户离线时的消息传递
Posted
技术标签:
【中文标题】用户离线时的消息传递【英文标题】:Message delivery when user is offline 【发布时间】:2008-10-29 17:17:25 【问题描述】:我有一个用于 OpenFire 的插件,它使用创建并向用户传递消息
XMPPServer.getInstance().getMessageRouter().route(message)
我想知道的是,如果用户不在线,该消息会发生什么情况。
我的目标是只有在用户在线时才发送消息,否则失败或被路由到比特桶。
【问题讨论】:
【参考方案1】:这完全取决于 Openfire 配置。在 Openfire 管理控制台中,转到服务器 -> 服务器设置 -> 离线消息。有存储、反弹和丢弃的选项。
存储:在 用户重新上线。 丢弃:丢弃消息。 退回:丢弃并通过返回消息通知发件人。【讨论】:
看起来不错。不要以为您不知道当发件人是插件时退回会做什么? 即使通过 API 发送,消息也需要来自某人。服务器将尝试回复该地址,如果该地址无效或当前未登录,则失败。【参考方案2】:另一种方法,如果您只是希望这些消息不下线而不影响其他消息的传递,则使用 type='headline'。标题不是很明确,但RFC 3921bis Section 5.2.2 说:
headline -- 消息提供提醒、通知或其他不需要回复的信息(例如,新闻头条、体育更新、近乎实时的市场数据和联合内容)。由于不希望回复消息,因此接收客户端通常会在界面中显示“标题”类型的消息,以适当地区分该消息与独立消息、聊天消息或群聊消息(例如,通过不向接收者提供回复能力)。 接收服务器应该将消息传递给接收者的所有可用资源。
当今的大多数服务器只会默默地将标题投放给离线用户,并在用户在线时将其传递给优先级最高的资源。
【讨论】:
以上是关于用户离线时的消息传递的主要内容,如果未能解决你的问题,请参考以下文章