我正在尝试将以下 echo server IRC 类似的聊天终端转换为 asyncio ,但我认为关于 trio 的信息并不多,因为它是新的,但是这个到 asyncio 的翻译是什么?
import trio
from itertools import count
from datetime import datetime
PORT = 9999
BUFSIZE = 16384
CONNECTION_COUNTER = count()
class ServerProtocol:
def __init__(self, server_stream):
self.ident = next(CONNECTION_COUNTER)
self.stream = server_stream
async def listen(self):
while True:
data = await self.stream.receive_some(BUFSIZE)
print("echo_server {}: received data {!r}".format(self.ident, data))
if not data:
print("echo_server {}: connection closed".format(self.ident))
return
print("echo_server {}: sending data {!r}".format(self.ident, data))
await self.stream.send_all('success'.encode())
class Server:
def __init__(self):
self.protocols = []
async def receive_connection(self, server_stream):
print('{} - {} CONNECTED.'.format(datetime.now(), dir(server_stream)))
sp: ServerProtocol = ServerProtocol(server_stream)
self.protocols.append(sp)
await sp.listen()
async def main():
await trio.serve_tcp(Server().receive_connection, PORT)
trio.run(main)