В простом консольном чат-приложении, использующем только сокеты без потоков, в котором клиент отправляет сообщение на сервер, а сервер получает его, а затем передает сообщение всем сокетам клиента, но все клиенты блокируются message = input(f'{my_username} > ')
, поэтому все клиенты должны нажать Enter
(как пустое сообщение) для получения сообщения, отправленного с сервера.
Существует ли эффективный способ исправить эту проблему без использования потоков, поскольку все клиенты заблокированы input
в while loop
Простой пример клиента может быть:
while True:
# HERE where each client is stopped by input
# Wait for user to input a message
msg= input(f'{USERNAME} > ')
# If message is not empty - send it
if msg:
# send message if not empty
# if not means receiving anything from server
....