Last active
October 19, 2024 17:49
-
-
Save blinkinglight/17ceba65b2b608a50c56adddbf9a30b7 to your computer and use it in GitHub Desktop.
Revisions
-
blinkinglight revised this gist
Oct 19, 2024 . 1 changed file with 7 additions and 3 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -7,6 +7,10 @@ def root_dir(): # pragma: no cover return os.path.abspath(os.path.dirname(__file__)) def get_time(): return '<div id="time">{}</div>'.format(time.strftime('%H:%M:%S')) @app.route('/') def index(): return """ @@ -18,18 +22,18 @@ def index(): <body> <div data-on-load="$$get('/events')"> <h1>Clock</h1> {} </div> </body> </html> """.format(get_time()) @app.route('/events') def events(): def generate(): while True: yield 'event: datastar-fragment\n' yield 'data: fragment {}\n\n'.format(get_time()) time.sleep(1) return Response(generate(), content_type='text/event-stream') -
blinkinglight created this gist
Oct 19, 2024 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,38 @@ from flask import Flask, Response import time app = Flask(__name__) def root_dir(): # pragma: no cover return os.path.abspath(os.path.dirname(__file__)) @app.route('/') def index(): return """ <!DOCTYPE html> <html> <head> <script type="module" defer src="https://cdn.jsdelivr.net/npm/@sudodevnull/datastar"></script> </head> <body> <div data-on-load="$$get('/events')"> <h1>Clock</h1> <p id="time"></p> </div> </body> </html> """ @app.route('/events') def events(): def generate(): while True: yield 'event: datastar-fragment\n' yield 'data: fragment <div id="time">{}</div>\n\n'.format(time.strftime('%H:%M:%S')) time.sleep(1) return Response(generate(), content_type='text/event-stream') if __name__ == '__main__': app.run(debug=True)