Используйте socketio
для передачи мгновенных сообщений между пользователями без обновления страницы.
Простейший пример:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
emit('response', message, broadcast=True)
if __name__ == '__main__':
socketio.run(app, debug=True)
<!DOCTYPE html>
<html>
<head>
<title>Пример чата</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.3.2/socket.io.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script type="text/javascript">
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function() {
socket.send('User connected');
});
socket.on('response', function(message) {
$('#messages').append($('<li>').text(message));
});
function sendMessage() {
var message = $('#message').val();
socket.send(message);
$('#message').val('');
}
</script>
</head>
<body>
<h1>Чат</h1>
<ul id="messages"></ul>
<input type="text" id="message" placeholder="Enter message">
<button>Отправить</button>
</body>
</html>