Скорей всего тебе через какое-то время необходимо продлять подписку
Нет, контроллеру необходимо один раз получить запрос на подписку, а далее пока не пришлёшь команду отписаться от подписки на события, он исправно шлёт события. У меня такое ощущение, что происходит разрыв соединения на уровне TCP/IP. Использовал пример из документации asyncio:
import asyncio
class OpenProtocolClient(asyncio.Protocol):
def __init__(self, message, loop):
self.message = message
self.loop = loop
def connection_made(self, transport):
transport.write(self.message)
def data_received(self, data):
print('Data received: {!r}'.format(data.decode()))
def connection_lost(self, exc):
print('The server closed the connection')
print('Stop the event loop')
self.loop.stop()
loop = asyncio.get_event_loop()
message = assemblyMessage('communicationStart') # эта функция ипортируется из другого модуля, не указан в коде
coro = loop.create_connection(lambda: OpenProtocolClient(message, loop),
'192.168.0.5', 4545)
loop.run_until_complete(coro)
loop.run_forever()
loop.close()
После старта программы контроллер получает запрос на соединение, отсылает ответ что соединение установлено и почему то происходит разрыв соединения на уровне TCP? Срабатывает connection_lost() вроде как приходит EOF. Кто знает почему так происходит?
Rodegast прочёл статью которую ты присылал, ну и сделал вывод, что мне в данной ситуации необходимо использовать asyncio, так как большую часть времени работы программы будет составлять I\O операции.