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 消息

如何获取 XMPP IOS 框架的 JID

构建 Android XMPP 即时通讯工具和服务器示例 [关闭]

显示如何从控制台应用程序发送 Lync 消息的简单示例/教程