You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

46 lines
1.2 KiB

import asyncio
import struct
import sys
class ProducerClient:
BUFFER_SIZE = 1024
def __init__(self, ip: str, port: int):
self.__ip = ip
self.__port = port
self.reader = None
self.writer = None
async def connect(self):
self.reader, self.writer = await asyncio.open_connection(self.__ip, self.__port)
async def send(self, message: str):
self.writer.write(struct.pack('<L', len(message)))
self.writer.write(message.encode('utf-8'))
async def send_notification(self, title: str, message: str):
await self.send(title)
await self.send(f'# {title}\n{message}')
async def notify_interactive(self):
await self.connect()
try:
while True:
print('Your notification: ')
title = input('title: ')
message = input('message: ')
await self.send_notification(title, message)
except asyncio.CancelledError:
pass
except KeyboardInterrupt:
print("\nbye")
sys.exit(0)
finally:
self.writer.close()
await self.writer.wait_closed()