3

我正在使用 Twisted 和 wokkel 编写一个聊天机器人,除了该机器人定期注销之外,一切似乎都在工作。为了临时解决这个问题,我在每个初始化的连接上都将存在设置为可用。有谁知道如何防止离线?(我假设如果我每分钟左右发送可用状态,机器人就不会离线,但这似乎太浪费了。)有人建议吗?这是存在代码:

class BotPresenceClientProtocol(PresenceClientProtocol):

    def connectionInitialized(self):
        PresenceClientProtocol.connectionInitialized(self)
        self.available(statuses={None: 'Here'})

    def subscribeReceived(self, entity):
        self.subscribed(entity)
        self.available(statuses={None: 'Here'})

    def unsubscribeReceived(self, entity):
        self.unsubscribed(entity)

提前致谢。

4

1 回答 1

3

如果您使用的是 XMPP,我假设您提到的情况就是这样wokkel,那么,根据RFC 3921,适用的标准,您确实需要定期交换存在信息(确实,这是 XMPP 的大量开销,并且正在研究解决方案,但这是目前最先进的技术)。从本质上讲,鉴于客户完全沉默可能是由于该客户刚刚离开的可能性很高,因此“我还在这里”这种定期“保证”似乎是必须的(我不确定那些方向是什么正在采取研究措施来改善这种情况——也许客户可以承诺“至少在接下来的 15 分钟内待在那里”,但鉴于大多数客户是一个善变的人类用户,他们无法阻止他们在任何时候离开,我都不确定这是否足够可靠)。

于 2010-05-01T23:40:03.073 回答