使用Twisted和Wokkel构建聊天机器人
我正在用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)
提前谢谢大家。
1 个回答
3
如果你在使用XMPP,像你提到的wokkel
,那么根据相关标准RFC 3921,你确实需要定期交换状态信息(实际上,这也是XMPP的一大负担,目前还在研究解决方案,但这就是现在的情况)。简单来说,由于客户端可能会突然不再响应,所以定期发送“我还在这里”的信息是必须的(我不太清楚目前的研究方向是什么,可能客户端可以承诺“在接下来的15分钟内会保持在线”,但考虑到大多数用户都是善变的人,随时可能改变主意离开,这样的承诺可能并不可靠)。