从 xmpp 中的节点取消订阅选定的订阅者
Posted
技术标签:
【中文标题】从 xmpp 中的节点取消订阅选定的订阅者【英文标题】:unsubscribe selected subscribers from node in xmpp 【发布时间】:2014-01-19 16:16:46 【问题描述】:在xmpp publish subscribe protocol 中有一个订阅和取消订阅节点的规定。但是,如果发布者自己想暂时取消订阅一些订阅者并继续只发布给选定的订阅者怎么办。
例如
A , B 和 C 现在订阅了节点 PIZZA
如果在某个时间之后如果 PIZZA
节点只想发布到 A 和 C 而不是 B。
我阅读了协议,但我没有找到类似的东西,所以有人知道该怎么做吗?
我使用openfire
作为服务器,asmack libs
作为客户端
【问题讨论】:
【参考方案1】:我对 xmpp 了解不多,也许这是那里的标准做法,但通常发布者对接收者一无所知,因此不应控制订阅者。为什么发布者比接收者更清楚接收者是否应该接收?
我会尝试不同的方法,例如在消息中添加数据,以便接收者可以决定是否应该忽略该消息。
发送空白消息不太可能起作用:那么所有仅在非空白时才处理消息的接收者将跳过它。所以它只有在 B 不过滤空白消息时才有效。相反,如果消息具有“filter=...”,则接收者可以根据 filter 的值决定进行处理。类似地,也许接收器 A 和 C 是类型“X”的接收器,而接收器 B 和 D 是类型“Y”的接收器。然后如果 filter = "X",则接收者 B 和 D 知道忽略它。如果过滤器是“Y”,A 和 C 知道忽略它。如果过滤器为空,它们都会处理它。
【讨论】:
好的,所以我最好尝试向接收者发送空白消息,而不是取消订阅它们,比如说以上是关于从 xmpp 中的节点取消订阅选定的订阅者的主要内容,如果未能解决你的问题,请参考以下文章
xmpp pubsub service(XEP-0060) 收到订阅请求后能否创建节点?