sleekxmpp是xmpp(又名jabber、google talk等)的一个优雅的python库。

sleekxmpp的Python项目详细描述


sleekxmpp是麻省理工学院许可的用于python 2.6/3.1+的xmpp库, 并在 XMPP: The Definitive Guide 作者:凯文·史密斯、雷姆科·特隆和彼得·圣安德烈。如果你到了 从阅读权威指南开始,请参阅更新说明 最新版本的sleekxmpp的示例。

SleekXMPP的设计目标和理念是:

依赖项数量少

安装和使用sleekxmpp应尽可能简单,无需 必须处理长的依赖链。

作为减少依赖项数量的一部分,一些第三方 模块包含在thirdparty目录中的sleekxmpp中。 从该模块导入第一次尝试导入现有安装的 在可能的情况下,在加载打包版本之前进行版本设置。

每个xep作为插件
遵循python的“包含电池”方法,目标是 为所有当前活动的XEP(最终版和草稿版)提供支持。自从 添加xep支持是通过易于创建的插件完成的,希望是 也为实验的实施和创造提供了坚实的基础 Xeps.
奖励您使用
sleekxmpp应该尽可能允许使用 合理的默认值和适当的抽象。XML可能很难工作 但不一定非要这样。

获取代码

从pypi获得最新的稳定版本:

pip install sleekxmpp

sleekxmpp的最新源代码可以在Github上找到。版本可以在 masterbranch,而最新的开发版本在 develop分支。

最新版本
开发版本

安装dnspython

如果您使用python3并希望使用dnspython,则必须签出并 安装python3分支:

git clone http://github.com/rthalley/dnspython
cd dnspython
git checkout python3
python3 setup.py install

讨论

邮件列表和xmpp聊天室可供讨论和获取 帮助使用sleekxmpp。

邮件列表
SleekXMPP Discussion on Google Groups
聊天
sleek@conference.jabber.org

文档和测试

文档既可以在代码中内联找到,也可以作为sphinx项目在/docs中找到。 要生成sphinx文档,请执行以下命令。HTML输出将 在docs/_build/html

cd docs
make html
open _build/html/index.html

运行sleekxmpp的测试套件:

python testall.py

光滑的xmpp样板文件

使用sleekxmpp的项目倾向于遵循设置客户机/组件的基本模式 连接和配置。这是一个光滑的xmpp所需的样板文件的要点。 基于项目。有关 SleekXMPP项目:

import logging

from sleekxmpp import ClientXMPP
from sleekxmpp.exceptions import IqError, IqTimeout


class EchoBot(ClientXMPP):

    def __init__(self, jid, password):
        ClientXMPP.__init__(self, jid, password)

        self.add_event_handler("session_start", self.session_start)
        self.add_event_handler("message", self.message)

        # If you wanted more functionality, here's how to register plugins:
        # self.register_plugin('xep_0030') # Service Discovery
        # self.register_plugin('xep_0199') # XMPP Ping

        # Here's how to access plugins once you've registered them:
        # self['xep_0030'].add_feature('echo_demo')

        # If you are working with an OpenFire server, you will
        # need to use a different SSL version:
        # import ssl
        # self.ssl_version = ssl.PROTOCOL_SSLv3

    def session_start(self, event):
        self.send_presence()
        self.get_roster()

        # Most get_*/set_* methods from plugins use Iq stanzas, which
        # can generate IqError and IqTimeout exceptions
        #
        # try:
        #     self.get_roster()
        # except IqError as err:
        #     logging.error('There was an error getting the roster')
        #     logging.error(err.iq['error']['condition'])
        #     self.disconnect()
        # except IqTimeout:
        #     logging.error('Server is taking too long to respond')
        #     self.disconnect()

    def message(self, msg):
        if msg['type'] in ('chat', 'normal'):
            msg.reply("Thanks for sending\n%(body)s" % msg).send()


if __name__ == '__main__':
    # Ideally use optparse or argparse to get JID,
    # password, and log level.

    logging.basicConfig(level=logging.DEBUG,
                        format='%(levelname)-8s %(message)s')

    xmpp = EchoBot('somejid@example.com', 'use_getpass')
    xmpp.connect()
    xmpp.process(block=True)

学分

主要作者:nathan fritz

fritzy@netflint.net@fritzy

内森也是xmpphp和Seesmic-AS3-XMPP的作者,也是 XMPP委员会。

合著者:lance stout
lancestout@gmail.com@lancestout
贡献者:

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何在Android上的可访问文件夹中创建文件?(非根)   tomcat Unix脚本未使用Process Runtime在Java中运行   模拟器中的java Android AudioTrack速度异常   java是否创建具有特定@ConditionalOnProperty的注释?   java如何使用json数据从gridview中的URL加载图像?(类别和子类别)   ConcurrentHashMap的java锁定值对象   如何在具有额外属性的Java枚举上执行Javadoc?   java如何修复SocketException连接重置问题?   无附加表的java JPA实体继承   java Android应用程序在启动屏幕后崩溃   java如何将Arraylist保存到文件?   java restTemplate从restfull Web服务获取文件数组   java活动带布局隐藏导航栏   socket未接收任何内容的java BufferedReader