Oreilly XMPP 示例代码
Posted
技术标签:
【中文标题】Oreilly XMPP 示例代码【英文标题】:Oreilly XMPP example codes 【发布时间】:2011-06-28 15:25:42 【问题描述】:我正在阅读这本书 Oreilly XMPP 权威指南
第 2 章中的 EchoBot 示例代码
我想知道如何测试这段代码...
def main():
bot = EchoBot("echobot@wonderland.lit/HelloWorld", "mypass")
bot.run()
EchoBot 类(对象):
def __init__(self, jid, password):
self.xmpp = sleekxmpp.ClientXMPP(jid, password)
self.xmpp.add_event_handler("session_start", self.handleXMPPConnected)
self.xmpp.add_event_handler("message", self.handleIncomingMessage)
def run(self):
self.xmpp.connect()
self.xmpp.process(threaded=False)
def handleXMPPConnected(self, event):
self.xmpp.sendPresence(pstatus="Send me a message")
def handleIncomingMessage(self, message):
self.xmpp.sendMessage(message["jid"], message["message"])
我安装了 slimxmpp,在 jabber.org 上创建了一个帐户,并将 echobot@wonderland.lit/HelloWorld 替换为 myusername@jabber.org/HelloWorld 并将 mypass 替换为 mypassword
但是当我运行这段代码时......它似乎没有做任何事情。它只是终止。 我有什么遗漏吗?
【问题讨论】:
它应该回显您发送到 myusername@jabber.org 的任何消息。使用另一个 JID 登录 jabber.org 并开始与我的用户名聊天 【参考方案1】:此示例代码不适用于新版本的 SleekXMPP 库,因为 API 已更改。
你的机器人的最后一行应该是:
self.xmpp.sendMessage(message["from"], message["body"])
SleekXMPP 库的作者在此处解释示例代码中所需的更改:https://github.com/fritzy/SleekXMPP/wiki/XMPP%3A-The-Definitive-Guide
【讨论】:
【参考方案2】:为了测试 echo bot,您可以打开另一个 Jabber 客户端(例如 Psi 或 Kopete),将 echo bot 添加到您的名单中,然后您可以像在任何其他 IM 场景中一样与它聊天,只有echo bot 将回复您发送的消息。
但请务必访问 https://github.com/fritzy/SleekXMPP/wiki/XMPP%3A-The-Definitive-Guide 以查看书籍示例的最新版本。
【讨论】:
以上是关于Oreilly XMPP 示例代码的主要内容,如果未能解决你的问题,请参考以下文章
WebRTC android 示例,XMPP 还是 Http Peer Connection?
无法使用教程“使用 Smack 实现基于 XMPP 的应用服务器的 Java 示例”
在 Python 中使用访问令牌通过 XMPP 发送 Facebook 消息