我正在使用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)
提前致谢。
答案 0 :(得分:3)
如果你正在使用XMPP,我假设是你提到wokkel
的情况,那么,根据RFC 3921,适用的标准,你需要定期交换状态信息(事实上,这是XMPP的重大开销,正在研究它的解决方案,但这是现在的最新技术水平。基本上,鉴于客户完全沉默的可能性很大可能是由于客户刚刚离开,“我还在这里”的定期“再保证”似乎是必须的(我不确定那些方向研究工作正在改善这种情况 - 也许客户可能会承诺“至少在接下来的15分钟内”,但鉴于大多数客户都是关于一个变幻无常的人类用户,他们无法改变主意任何时候离开,我都不确定它是否足够有用)。