- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在寻找用于实现 SleekXMPP XEP 60 插件的工作示例代码。我想做的是通过 TLS 进行身份验证并订阅名为“blogupdates”的节点然后只需等待事件并获取包含在我已经搜索了几天,但我找不到一个好的工作示例 google 或 SO
请注意,我订阅的不是用户而是节点,因此发布者可以是任何人。
有什么帮助吗?
最佳答案
如果您查看 SleekXMPP 邮件列表 (Beginner - SleekXMPP - XEP-0060) 上的这个帖子,我有一个示例 Pubsub 客户端,您可以试验和检查。我将整理并完善这两个脚本,以便尽快添加到捆绑的示例中。
(编辑:这些文件现在位于 develop 分支的示例目录中。参见 examples/pubsub_client.py 和 examples/pubsub_events.py)
对于您的用例,您可以:
xmpp['xep_0060'].subscribe('pubsub.example.com', 'blogupdates')
更高级的用法,你还可以传递:
bare=False
# Subscribe using a specific resource, and not the bare JID
subscribee='somejid@example.com'
# Subscribe a different JID to the node, if authorized
options=data_form
# Provide subscription options using a XEP-0004 data form
但是,如果您使用的是 develop 分支,我添加了一些您可能喜欢的新功能,以便更轻松地处理发布事件:
# Generic pubsub event handlers for all nodes
xmpp.add_event_handler('pubsub_publish', handler)
xmpp.add_event_handler('pubsub_retract', handler)
xmpp.add_event_handler('pubsub_purge', handler)
xmpp.add_event_handler('pubsub_delete', handler)
# Use custom-named events for certain nodes, in this case
# the User Tune node from PEP.
xmpp['xep_0060'].map_node_event('http://jabber.org/protocol/tune', 'user_tune')
xmpp.add_event_handler('user_tune_publish', handler)
# ...
# The same suffixes as the pubsub_* events.
# These events are raised in addition to the pubsub_* events.
对于事件处理程序,您可以遵循以下模式:
def pubsub_publish(self, msg):
# An event message could contain multiple items, but we break them up into
# separate events for you to make it a bit easier.
item = msg['pubsub_event']['items']['item']
# Process item depending on application, like item['tune'],
# or the generic item['payload']
您可以查看 XEP-0107 和相关的 PEP 插件以查看更多示例,因为添加这些功能是为了实现这些功能。
那么,这就是您的用例:
# Note that xmpp can be either a ClientXMPP or ComponentXMPP object.
xmpp['xep_0060'].map_node_event('blogupdates', 'blogupdates')
xmpp['xep_0060'].add_event_handler('blogupdates_publish', blogupdate_publish)
xmpp['xep_0060'].subscribe('pubsub.example.com', 'blogupdates')
# If using a component, you'll need to specify a JID when subscribing using:
# ifrom="specific_jid@yourcomponent.example.com"
def blogupdate_publish(msg):
"""Handle blog updates as they come in."""
update_xml = msg['pubsub_event']['items']['item']['payload']
# Do stuff with the ElementTree XML object, update_xml
最后,如果您发现自己花了太多时间在 Google 上搜索,请访问 Sleek 聊天室:sleek@conference.jabber.org
-- 兰斯
关于python - sleekxmpp 发布订阅示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9745908/
正如问题所说,我该怎么做?以下是代码- import logging from sleekxmpp import ClientXMPP logging.basicConfig(level=loggin
我目前正在使用 SleekXMPP 在 Python 中构建一个简单的 XMPP 客户端。虽然我是初学者,虽然我已经阅读过有关节、存在、花名册等的信息。但我不确定如何从流中获取 XML 或如何处理它。
这听起来可能很愚蠢,但我遵循了本教程: https://github.com/fritzy/SleekXMPP/wiki/Creating-a-SleekXMPP-Plugin 这是最后使用创建的 X
我正在尝试修改 sleekxmpp echobot 示例,使其更像一个客户端。我可以使用下面的代码接收和打印消息,但是如何使代码也允许我随意将消息发送到另一个 JID,而不是作为对收到的消息的自动响应
我正在寻找用于实现 SleekXMPP XEP 60 插件的工作示例代码。我想做的是通过 TLS 进行身份验证并订阅名为“blogupdates”的节点然后只需等待事件并获取包含在我已经搜索了几天,但
我正在用 python 制作一个 XMPP 中间件,它监听一个地址(主机、端口),当它在该端口上接收到一些连接时,它会向服务器上的 jid(XMPP 用户)发送一条 XMPP 消息。快速回顾我的设置对
我是 XMPP 的新手 :) 我一直在使用 Ejabberd 和 sleekXMPP。我的问题是如何使用 sleekXMPP 列出在线房间? 谢谢 最佳答案 我也为此苦苦挣扎了一段时间。列出房间不是
我目前正在尝试使用 Python3.5 中的 sleekxmpp 模块连接到 jabber.at,一个 XMPP 服务。 Jabber.at 的 SSL 证书由 Let's Encrypt 颁发。 我
我正在使用 sleekxmpp 连接到 Google Talk。我正在尝试使用 changed_status 事件跟踪联系人何时更改其状态。我遇到的问题是,当我记录状态更改时,与 changed_st
我正在尝试使用 sleekXMPP 在 facebook 聊天中发送消息,使用此处的答案作为样板:Send a Facebook Message with XMPP using Access Toke
我正在使用此示例代码通过 XMPP 连接到 Facebook 聊天: #!/usr/bin/python import sleekxmpp import logging logging.basicCo
我有用于 python 的 sleekXMPP 并且我已经使用 API 创建函数来发送消息,虽然当我研究接收它们时我找不到任何东西,有人可以帮我解决这个问题,或者反驳这种可能性。谢谢。下面是我用来发送
对于业余问题表示歉意。我刚刚学习 Python,正在使用 XMPP 摸索这个 XMPP 机器人脚本。 我有一个使用 SleekXMPP 中的 MUC 机器人示例构建的机器人:http://sleekx
我是一名优秀的程序员,十分优秀!