我正在使用客户端上的websockets
和服务器上的flask
+ flask_sockets
进行简单的聊天。
当客户端获得令牌后,连接到网络套接字并发送消息,就会出现websockets.exceptions.ConnectionClosed
客户代码:
async def main(token):
async with websockets.connect(f'ws://localhost:5000/ws?token={token}') as ws:
await ws.send(input('> '))
print(await ws.recv())
if __name__ == '__main__':
username = input('Your username >>> ').strip()
token = get(f'http://localhost:5000/getToken?username={username}').text
print(f"Got token: {token}")
while True:
asyncio.get_event_loop().run_until_complete(main(token))
服务器WebSocket处理程序:
class User:
ws = None
def __init__(self, username):
self.username = username
@sockets.route('/ws')
def alert(ws):
token = request.args.get('token')
if token in users:
user = users[token]
user.ws = ws
print(f'Connected user {token}')
print(users[token].username, '>>>', ws.receive())
我希望连接保持打开状态,以便当出现新消息时,服务器会使用类似的方式将其发送给所有客户端
for user in users:
user.ws.send(message)
P.S。这是我关于StackOverflow的第一篇文章,欢迎任何更正:)