Я нашел обсуждение здесь: Как мне отключить мой клиентский объект XMPPPY? и в заключение говорится, что .disconnect() — правильный способ сделать это.
Это код:
while True:
try:
client.Process(5)
if not client.isConnected:
client.reconnectAndReauth()
except KeyboardInterrupt:
client.disconnect()
break;
flush_queued_messages()
и это ошибка, которую я получаю, когда нажимаю ^C
msg keys: [u'message_type', u'from', u'message_id']
DEBUG: socket got
DEBUG: socket got
DEBUG: socket got
^C DEBUG: socket sent </stream:stream>
DEBUG: socket error Socket error while receiving data
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/xmpp/transports.py", line 146, in receive
try: received = self._recv(BUFLEN)
SSLError: [Errno 8] _ssl.c:1415: EOF occurred in violation of protocol
DEBUG: client stop Disconnect detected
DEBUG: socket error Socket operation failed
Этот серверный код взят с сервера gcm, реализованного с использованием примера кода Python по адресу https://developer.android.com/google/gcm/ccs.html
Я реализовал это, потому что через некоторое время мой сервер перестал получать сообщения (SEND все еще в порядке) - я подумал, что у меня может быть слишком много активных подключений. Просто сообщения, отправленные на сервер, не приходят последовательно. Это еще одна проблема, которую я еще не понял.