Почему я получаю эту ошибку при использовании client.disconnect() для отключения (с использованием python xmpppy)?

Я нашел обсуждение здесь: Как мне отключить мой клиентский объект 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 все еще в порядке) - я подумал, что у меня может быть слишком много активных подключений. Просто сообщения, отправленные на сервер, не приходят последовательно. Это еще одна проблема, которую я еще не понял.


person Manish    schedule 26.12.2014    source источник
comment
Если нажать control+c, это завершит его приложение, поэтому сокет будет закрыт, и операция сокета завершится ошибкой.   -  person so_jin_ee    schedule 07.01.2015
comment
Ага. Это я понимаю. Чего я не понимаю, так это почему это происходит даже после того, как я использую client.disconnect()? Разве это не правильный способ отключиться?   -  person Manish    schedule 08.01.2015
comment
Попробуйте эту ссылку   -  person so_jin_ee    schedule 08.01.2015
comment
Я буду. Спасибо. Тем не менее, я думаю, что поддержка и документация для python настолько ограничены, что я должен просто переключиться на java :|   -  person Manish    schedule 08.01.2015


Ответы (1)


Я перешел на Java для реализации кода. Там работает нормально. Наиболее вероятная причина в том, что в документации беспорядок, а функция разъединения, вероятно, не определена должным образом. Само собой разумеется, что создание этой библиотеки было хорошим усилием в любом случае!

person Manish    schedule 25.01.2015