Flask SSE

Technologie Server-Send Event (SSE) umožňuje aplikacím ve Flasku posílat data klientovi ve formě obecně asynchronních událostí. Možnosti lze demonstrovat na následujícími příkladu:

from flask import Flask, Response, render_template
from datetime import datetime
import time
 
app = Flask(__name__)
 
# a generator with yield expression
def gen_date_time():
    while True:
        time.sleep(1)
        now = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
        # DO NOT forget the prefix and suffix
        yield 'data: %s\n\n' % now
 
@app.route('/sse_demo')
def sse_demo():
    return Response(
        gen_date_time(),  # gen_date_time() is an Iterable
        mimetype='text/event-stream'  # mark as a stream response
    )
 
@app.route('/')
def index():
    return render_template('index.html')
 
if __name__ == '__main__':
    app.run(debug=True)

<!DOCTYPE html>
<html>
<body lang="en">
    Server side clock: <span id="clock"></span>
    <script>
        var source = new EventSource("/sse_demo");
        source.onmessage = function (event) {
            document.getElementById("clock").innerHTML = event.data;
        };
    </script>
</body>
</html>

courses/b0b37nsi/addons/02.txt · Last modified: 2023/04/13 10:21 by viteks