5

我很难与 XMPP (Prosody) 建立联系。但是,如果我使用 PSI,它可以正常工作并请求您的建议。

这是我的 python 的代码片段:

client = xmpp.Client(host)
client.connect(server=(host,port))
client.auth(username, passwd,resource='', sasl=1)
client.sendInitPresence()

在调试模式下:

DEBUG: dispatcher  warn  Registering protocol "error" as <class 'xmpp.protocol.Protocol'>(http://etherx.jabber.org/streams)
DEBUG: socket      sent  <?xml version='1.0'?><stream:stream xmlns="jabber:client" to="localhost" version="1.0" xmlns:stream="http://etherx.jabber.org/streams" >
DEBUG: socket      error Socket error while receiving data
                         Traceback (most recent call last):
                            File "/usr/local/lib/python2.7/dist-packages/xmpp/transports.py", line 161, in receive
                            try: received = self._recv(BUFLEN)
                            error: [Errno 104] Connection reset by peer
DEBUG: client      stop  Disconnect detected
DEBUG: socket      error Socket operation failed
                         Traceback (most recent call last):
                            File "/usr/local/lib/python2.7/dist-packages/xmpp/transports.py", line 161, in receive
                            try: received = self._recv(BUFLEN)
                            error: [Errno 104] Connection reset by peer
DEBUG: socket      error Socket error while receiving data
DEBUG: client      stop  Disconnect detected

**Prosody logs :** 
Oct 20 23:46:39 c2s94ba718      info    Client connected
Oct 20 23:46:39 c2s94ba718      info    Client disconnected: ssl handshake failed
Oct 20 23:46:39 c2s94ba718      info    Destroying session for (unknown) ((unknown)@(unknown))
Oct 20 23:48:57 c2s96052a0      info    Client connected
Oct 20 23:48:57 c2s96052a0      info    Client disconnected: ssl handshake failed
Oct 20 23:48:57 c2s96052a0      info    Destroying session for (unknown) ((unknown)@(unknown))

对此的任何建议将不胜感激。目的是连接到 XMPP 服务器并通过 python 加入 MUC。

4

2 回答 2

0

我看到您使用的是 Python 2.7,请确保您已更新到最新版本 (2.7.11),因为最近有一些 SSL 更改可能会破坏大量代码。

于 2016-05-30T17:35:47.940 回答
0

当我没有在服务器端提供证书链时,我在 Pidgin(libpurple 2.10.11)中遇到了这个错误。

我通过在服务器上的证书末尾添加 CA 捆绑包(即中间证书)解决了这个问题:

cat /path/to/ica.crt >> /path/to/prosody.crt

另请参阅https://prosody.im/doc/certificates#certificate_chains了解更多信息

于 2017-05-09T13:40:28.810 回答