#!/usr/bin/env python3.7 from Server import Server class ClientConnection(object): """ Client connection object """ def __init__(self, server: Server, conn, addr, buffSize=4096, encoding='utf8'): self.server = server self.conn = conn self.addr = addr self.name = '{}:{}'.format(addr[0], addr[1]) self.buffSize = buffSize self.encoding = encoding def serve(self) -> None: """ Server this connection and start lisneting for incoming message """ self.send( '[system] Type \':quit\' to quit this conversation') while True: msg = self.recv() if msg != ':quit' and len(msg) > 0: self.server.sendToAll(self, msg) else: self.send('[system] :goodbye:') break self.kill() def send(self, msg: str, end='\n') -> None: """ Wrapper method for socker.send and encode the message to set encoding """ self.conn.send(bytes(msg + end, self.encoding)) def recv(self) -> str: """ Wrapper method for socket.recv and decode the message from set encoding """ return self.conn.recv(self.buffSize).decode(self.encoding).split('\n')[0] def kill(self) -> None: """ Close this connection and remove it from server """ self.conn.close() self.server.removeClient(self)