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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions