class TCPConnection(QThread):
    connected = pyqtSignal(bool)
    message = pyqtSignal(str)

    def __init__(self, parent=None):
        super().__init__(parent)
        self.ip = "127.0.0.1"
        self.port = 4040
        self.username = None
        self.message_queue = Queue()
        self.client = TCPClient(self.ip, self.port, 2048)
        self.client.add_handler(ON_MESSAGE, self.message.emit)

    def connect(self):
        try:
            self.client.connect()
            return True
        except ConnectionRefusedError:
            return False

    def send_message(self, message):
        self.message_queue.put(f"{self.username}: {message}")

    def run(self):
        conn_status = self.connect()
        self.connected.emit(conn_status)
        if conn_status:
            self.client.send(f"{self.username} has joined!")
            self.client.start()
            while True:
                if not self.message_queue.empty():
                    self.client.send(self.message_queue.get())
from server import TCPServer
from client import TCPClient

import os
from time import sleep



if __name__ == "__main__":
    client = TCPClient('localhost', os.environ.get('PORT'))
    client.start()
    
    # time to create client
    sleep(1)
    
    for i in range(10):
        data = {'key': 'key'+str(i),'value': 'value'+str(i)}    
        client.sendData(data)
        sleep(5)