Я много программировал на javascript/typescript, и теперь мне нужно написать программу, которая открывает TCP-соединение и выполняет некоторые задачи по обмену данными, инициированные входящими сообщениями через Reticulum Link.
Проблема
Программа поддерживает открытое TCP-соединение в качестве TCP-клиента, который в Python представлен asyncio.StreamReader и асинхронно.StreamWriter. Если бы это было написано на JavaScript, я бы просто установил обратный вызов для реакции на событие завершения, например:
Код: Выделить всё
let socket = new net.Socket()
socket.open( 'localhost', 8001 )
socket.on( 'end', () => { connection_lost_handler() } )
В документации библиотеки asyncio я не смог найти ничего похожего на обработку события end. Кроме того, если открытое соединение вызвало какое-то исключение, где мне его перехватить? Приложение Reticulum хранит средства чтения и записи в экземпляре объекта, который предоставляет методы, взаимодействующие с двумя потоками, но они активны только при вызове из основного приложения.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ng-asyncio
Мобильная версия