Performance: Server-Sent Events alternative
This concept affects how fast the page can receive live updates and how much CPU and network resources are used during continuous data streaming.
from flask import Flask, render_template from flask_socketio import SocketIO, emit import eventlet import time eventlet.monkey_patch() app = Flask(__name__) socketio = SocketIO(app) def send_time(): while True: socketio.emit('time_update', {'time': time.ctime()}) socketio.sleep(1) socketio.start_background_task(send_time) @app.route('/') def index(): return render_template('index.html') if __name__ == '__main__': socketio.run(app)
from flask import Flask, Response import time app = Flask(__name__) def event_stream(): while True: yield f'data: The time is {time.ctime()}\n\n' time.sleep(1) @app.route('/stream') def stream(): return Response(event_stream(), mimetype='text/event-stream')
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Server-Sent Events | Low (stream updates as text) | Low (updates usually don't change layout) | Low to Medium (depends on update frequency) | [!] OK |
| WebSockets | Low (event-driven updates) | Low | Low | [OK] Good |
from flask_socketio import SocketIO, emit
socketio = SocketIO(app)
@socketio.on('connect')
def handle_connect():
emit('message', {'data': 'Welcome!'})from flask_socketio import SocketIO
socketio = SocketIO(app)
@socketio.on('message')
def handle_message(data):
print('Received:', data)
socketio.run(app)socketio.emit('chat', message, broadcast=True) inside an event handler correctly uses socketio.emit with event name and broadcast flag.Pass the test and this pattern moves unknown