Обновление страницы в Flask после заполнения в БД

Рейтинг: -1Ответов: 1Опубликовано: 06.08.2023

Запустил Flask c хостом '0.0.0.0'. Сайт - мессенджер. Зашел с телефона на сайт - отправил сообщение - на ПК не появилось сообщение ровно до того момента, пока не обновил сайт, как сделать авто-обновление при добавлении новой записи в Flask?

Ответы

▲ 1

Используйте 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>