在本地运行时,twisted / wokkel 的连接问题

2 投票
2 回答
536 浏览
提问于 2025-04-16 21:03

我用 twisted/wokkel 库创建了一个简单的 XMPP 机器人。在我的本地机器上连接到一个外部的 XMPP 服务器时,它运行得非常好。但是,当我在 XMPP 机器上直接运行这个 twisted 脚本时,它立刻拒绝了连接(或者直接断开了连接)。

我尝试关闭 ejabberd 上的 TLS 功能,问题就解决了。当然,这并不是一个可行的长期解决方案,但可能能给解决问题提供一些线索。传递给 wokkels 的 connectionLost 方法的“原因”就是 None。

如果有任何建议,我将非常感激!

(这是在与 jabber 同一台机器上运行时出现的错误):

2011-07-07 22:01:52+0000 [-] Log opened.
2011-07-07 22:01:52+0000 [-] twistd 11.0.0 (/usr/bin/python2.6 2.6.6) starting up.
2011-07-07 22:01:52+0000 [-] reactor class: twisted.internet.selectreactor.SelectReactor.
2011-07-07 22:01:52+0000 [-] Starting factory <twisted.words.protocols.jabber.xmlstream.XmlStreamFactory object at 0x169df50>
2011-07-07 22:01:52+0000 [XmlStream,client] Connection lost: None
2011-07-07 22:01:52+0000 [XmlStream,client] <twisted.internet.tcp.Connector instance at 0x1120dd0> will retry in 2 seconds
2011-07-07 22:01:52+0000 [XmlStream,client] Stopping factory <twisted.words.protocols.jabber.xmlstream.XmlStreamFactory object at 0x169df50>
2011-07-07 22:01:52+0000 [-] Main loop terminated.
2011-07-07 22:01:52+0000 [-] Server Shut Down.

2 个回答

0

如果你在使用 XMPPClient,可以试着把它的 logTraffic 属性设置为 True。这样一来,连接期间发送和接收的所有信息都会被记录下来,可能会给你一些关于发生了什么的线索。

0

听起来你可能没有安装Python的OpenSSL库,或者这些库没有在你的Python路径中。你可以试着安装python-openssl(这是Debian/Ubuntu的包名),或者你服务器对应的版本。如果没有这些库,Twisted会启动,但会禁用TLS和SSL功能。

如果你已经安装了Python的OpenSSL库,那可能是一个奇怪的握手问题,正如Peter所说的。ejabberd的日志里有没有什么信息?

撰写回答