Задать вопрос
@hamster141095

Можно ли по websocket соединению отправлять запрос через определенный интервал?

В пример возьмем чат, подключаются юзеры , но сервер не отдает на каждое подключение какую либо информацию. Поэтому не узнать, подключился ли кто-то пока сам не отправишь запрос (типа ws.send({type: 'user_list"})).
Можно ли поставить интервал ( в 1 или 3 секунды) и постоянно отправлять запрос на сервер (так же по ws) на получение информации по подключенным пользователям? Не сильна ли будет нагрузка?
  • Вопрос задан
  • 103 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
SladkayaDoza
@SladkayaDoza
Обучаюсь программированию
Если вы собираетесь писать чат, то желательно все производить через сервер.
Пример смотрите ниже:
users = []

async def send(ws, message):
    await ws.send(json.dumps(message))

async def handler(websocket, _):
    #Вызывается при присоединении пользователя
    user = websocket
    users.append(user)

    # Ожидает сообщения от клиента
    try:
        async for message in websocket:
            # Возврат сообщения
            await send(user, {"type": "pong"})
    except:
        pass

if __name__ == '__main__':
    print("Sent!")
    if config.SSL_KEY:
        ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
        ssl_context.load_cert_chain(config.SSL_CHAIN, config.SSL_KEY)
        start_server = websockets.serve(handler, config.IP, config.PORT, ssl=ssl_context)
    else:
        start_server = websockets.serve(handler, config.IP, config.PORT)
    asndf = asyncio.get_event_loop()
    asndf.run_until_complete(start_server)
    asyncio.get_event_loop().run_forever()

Это не создает дополнительной нагрузки на сервер
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы