python asyncio.start_server() .Почему после одного ответа сервак отключает пользователя?

Писал сервер для чата при помощи модуля asyncio, но после ответа клиенту сервак отключал пользователя. Как это пофиксить?

версия python 3.8.0

import asyncio
import socket
import json


class Server():
    def __init__(self,host,port):
        self.host = host
        self.port = port

        self.clients = {}

    async def start_server(self):
        server = await asyncio.start_server(self.accept_conection,
                                            self.host,self.port,
                                            family = socket.AF_INET,
                                            flags = socket.SOCK_DGRAM)
        await server.serve_forever()

    async def accept_conection(self,reader,writer):
        addr = writer.get_extra_info('peername')
        print(addr)
        sock = reader._transport._sock
        response = await self.read_response(reader)
        print(response)
        if response.decode():
            data = json.loads(response)
            self.clients[addr] = data['nick']
            await self.broadcast_response(sock,data['msg'])


    async def read_response(self,reader):
        while True:
            request = await reader.read(1024)

            if request:
                return request
            else:
                return None

    async def broadcast_response(self,sock,msg):
        for client in self.clients:
            print(self.clients[client])
            response = f"{self.clients[client]}:{msg}"
            sock.sendto(bytes(response,'utf8'),client)
            self.clients.pop(client)

if __name__ == "__main__":
    server = Server('localhost',5000)
    asyncio.run(server.start_server())

Ответы (1 шт):

Автор решения: ooser

Для тех у кого еще имеется такой вопрос. Ответ кроется в зацикливании и ожидании данных, пока не закроется соединение. Собственно говоря, автор вопроса решил задачу, только не отметил его.

async def read_response(self,reader):
    while True:
        request = await reader.read(1024)

        if request:
            return request
        else:
            return None
→ Ссылка