WebSocket закрывается сразу после открытия / отправки - PullRequest
1 голос
/ 13 апреля 2019

Я делаю простой чат, используя 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)

PS Это мой первый пост в StackOverflow, поэтому любойисправления приветствуются:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...