чатбот с использованием витого и воккеля - PullRequest
3 голосов
/ 02 мая 2010

Я пишу чат-бота, используя 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 голосов
/ 02 мая 2010

Если вы используете XMPP, как я полагаю, соответствует вашему упоминанию wokkel, то в соответствии с RFC 3921 , применимым стандартом, вам необходимо периодически обмениваться информацией о присутствии (на самом деле Это существенные накладные расходы на XMPP, и его решения находятся в стадии изучения, но это состояние дел на данный момент). По сути, учитывая высокую вероятность того, что полное молчание со стороны клиента может быть связано с тем, что этот клиент просто уходит, периодическое «заверение» типа «я все еще здесь» представляется обязательным (я не уверен, в каком направлении исследовательские усилия предпринимаются для улучшения этой ситуации - возможно, клиент мог бы взять на себя обязательство «быть там, по крайней мере, в течение следующих 15 минут», но, учитывая, что большинство клиентов имеют дело с непостоянным человеком, которого нельзя остановить, чтобы изменить свое мнение в в любое время и уходя, я не уверен, что это было бы достаточно твердым, чтобы быть полезным).

...