Slixmpp是XMPP(又名Jabber)的一个优雅的Python库。

slixmppfix的Python项目详细描述


Slixmpp是麻省理工学院授权的用于python3.5+的XMPP库。它是一个叉子 圆滑的XMPP。在

Slixmpp的目标是只重写库的核心(底层 套接字处理、计时器、事件调度)以删除所有 线程。在

建筑

Slixmpp可以利用cython来提高关键模块的性能。 为此,cython3必须与libidn头一起使用。 否则,不需要编译。建筑是通过跑步来完成的设置.py公司名称:

python3 setup.py build_ext --inplace

文件和测试

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

^{pr2}$

要运行Slixmpp的测试套件:

python run_tests.py

Slixmpp样板

使用Slixmpp的项目倾向于遵循设置客户机/组件的基本模式 连接和配置。以下是Slixmpp所需样板的要点 基于项目。请参阅documentation或examples目录以获取有关的更详细的原型 Slixmpp项目:

import logging

from slixmpp import ClientXMPP
from slixmpp.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(forever=True)

Slixmpp学分

维护者:
贡献者:

学分(SleekXMPP)

主要作者:Nathan Fritz

fritzy@netflint.net@fritzy

Nathan也是XMPPHP和Seesmic-AS3-XMPP的作者,也是 XMPP理事会。在

合著者:Lance Stout
lancestout@gmail.com@lancestout
贡献者:

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

推荐PyPI第三方库


热门话题
java Spring freemarker多模板加载程序路径   在java插件中从控制台获取输入   java在包中创建继承类   网页抓取Java Jsoup网页抓取   java在线程内创建一个对象,而true条件具有相同的引用   java如何根据空格数拆分字符串   java新的安卓 studio更新中的配置文件“app”是什么?   java在将ArrayList写入/读取到文件时出现奇怪的问题   java Reg替换文本块第一次出现+最后一次出现   java当我单击任何RecyclerView列表项时,如何在MainActivity的EditText中显示特定的单击项?   JAVA XML删除节点仅删除第一个外观   java如何在数组中查找特定值   java SVG/矢量图形对象布尔运算(并集、交集、减法)   java在Android中创建线程需要多长时间   尝试从JBOSS联系Oracle LDAP服务器时发生java连接重置异常   java基于参数获取特定的实现实例   使用java就地修改文件内容   java MonetaryException:未加载MonetaryAmountsSingletonSpi   java接受用户的不同输入并使其触发完全相同的代码段的最短方法是什么   Spring 3.2.8应用程序中未找到java HTTP 404错误