Real-Time Features with Flask-SocketIO


Introduction

Real-time features, such as WebSockets, allow applications to send and receive data instantly without refreshing the page. Flask-SocketIO makes it easy to integrate WebSocket communication into a Flask application, enabling live notifications and updates.

This article explains how to build real-time features using Flask-SocketIO, with practical examples for notifications and live updates.

Step 1: Install Flask-SocketIO and Dependencies

Install Flask-SocketIO and its WebSocket dependency:

            pip install flask-socketio eventlet
        

Step 2: Set Up Flask-SocketIO

Update your Flask application to include Flask-SocketIO:

  from flask import Flask, render_template
   from flask_socketio import SocketIO

   app = Flask(__name__)
   socketio = SocketIO(app)

   @app.route('/')
  def index():
      return '''
      
      
       
           

Real-Time Updates

''' @socketio.on('new_message') def handle_message(data): print(f"Received message: {data}") socketio.emit('update', f"Server received: {data}")

Step 3: Start the Application

Run the Flask application with Flask-SocketIO:

            socketio.run(app, debug=True)
        

Access the app in your browser. Clicking "Send Message" sends a WebSocket message to the server, which broadcasts an update to all clients.

Step 4: Adding Notifications

Add a notification example to your application:

  @socketio.on('notify')
   def handle_notification(data):
      print(f"Notification: {data}")
      socketio.emit('notification', f"New notification: {data}")
        

Update the JavaScript in the template to handle notifications:

    socket.on('notification', function(data) {
        alert(data);
     });

     function sendNotification() {
        socket.emit('notify', 'You have a new notification!');
    }
        

Add a button in the HTML:

            <button onclick="sendNotification()">Send Notification</button>
        

Step 5: Broadcasting Live Updates

Implement live updates, such as a live chat or dashboard updates:

  @app.route('/broadcast')
  def broadcast():
      socketio.emit('update', 'This is a broadcast update!')
      return "Broadcast sent!"
        

Access /broadcast in your browser to send a broadcast message to all connected clients.

Conclusion

By integrating Flask-SocketIO, you can easily add real-time features to your Flask application, such as WebSocket-based communication, live notifications, and updates. This improves user interaction and application responsiveness.





Advertisement