2

我将 pyxmpp2 安装https://github.com/Jajcus/pyxmpp2到我的 Ubuntu 机器上。我还为它安装了 Openfire 3.8.1。我想使用 pyxmpp2 在同一台机器上连接到我的 Openfire 服务器。

在我的 Openfire 控制面板中的服务器 -> 服务器管理器 -> 服务器信息中,面板中服务器属性中显示的服务器名称为 mymachine,环境部分中显示的主机名称为 MyMachine。

我尝试了以下代码:

import logging
from pyxmpp2.jid import JID
from pyxmpp2.client import Client
logging.basicConfig()
client = Client(JID("admin@mymachine"),[])
client.connect()

并收到以下消息:

警告:pyxmpp2.resolver:无法解析“_xmpp-client._tcp.mymachine”:NXDOMAIN

我错过了配置吗?

4

2 回答 2

1

看起来您的域没有 DNS SRV 记录,因此 pyxmpp2 无法解析它们。查看http://wiki.xmpp.org/web/SRV_Records以了解如何创建它们。

基本上,DNS SRV 记录具有以下形式

_service._proto.name TTL 类 SRV 优先权重端口目标

这可能看起来像这个例子

_xmpp-client._tcp.example.net. 86400 IN SRV 5 0 5222 example.net.

也许 pyxmpp2 还提供了一种直接指定用于 XMPP 服务的主机的方法。这将避免 DNS SRV 查找。

于 2013-03-22T10:11:48.833 回答
0

它可能正在使用 ipv6,您可以强制使用 ipv4u"ipv4": True并指定服务器u"server": "chat.facebook.com"

handler = MyHandler(JID(target_jid), message)
settings = XMPPSettings({
                            u"ipv4": True,
                            u"server": "chat.facebook.com",
                            u"password": your_password,
                            u"starttls": True,
                            u"tls_verify_peer": False,
                        })
client = Client(JID(your_jid), [handler], settings)
client.connect()
client.run()

完整代码位于pyxmpp2示例文件夹中send_message_client.py

于 2015-09-22T20:22:37.210 回答