Skip to content

Соединение разрывается при получении сообщения в WebSocket режиме #41

@MikhailProfile

Description

@MikhailProfile

async def _send_notification_response(self, chat_id: int, message_id: str) -> None:

Описание:

Проблема

При использовании MaxClient (WebSocket режим) соединение разрывалось сразу после получения входящего сообщения. Обработчики сообщений (on_message) не вызывались.

Причина

В методе _send_notification_response в файле interfaces.py была инвертирована логика проверки:

Было:

if self._socket is not None and self.is_connected:
return
await self._send_and_wait(opcode=Opcode.NOTIF_MESSAGE, ...)

В WebSocket режиме self._socket = None, поэтому условие всегда было False, и код пытался отправить NOTIF_MESSAGE подтверждение на WebSocket сервер. WebSocket сервер не принимает такие ответы и закрывает соединение.

Решение

Исправить:

if self._socket is None: # WebSocket режим - не отправляем подтверждение
return
if not self.is_connected:
return
await self._send_and_wait(opcode=Opcode.NOTIF_MESSAGE, ...)

Подтверждение NOTIF_MESSAGE нужно отправлять только в Socket режиме (SocketMaxClient). В WebSocket режиме сервер обрабатывает подтверждения иначе.

Затронутые файлы

  • src/pymax/interfaces.py — метод _send_notification_response

У меня после исправления заработало корректно.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions