How to use Flask or Bottle with WebSockets?
Leave a message
Hey there! If you're into web development, you've probably heard of Flask and Bottle, two super popular Python web frameworks. And if you're looking to add some real - time magic to your web apps, WebSockets are the way to go. In this blog, I'll share how you can use Flask or Bottle with WebSockets, and as a Flask and Bottle supplier, I'll also give you some insights into how these combos can level up your projects.
What are WebSockets?
Before we dive into the integration, let's quickly go over what WebSockets are. In simple terms, WebSockets are a protocol that allows for full - duplex communication between a client and a server over a single TCP connection. Unlike the traditional HTTP request - response model, WebSockets keep the connection open, enabling real - time data transfer. This is great for things like chat apps, live dashboards, and online gaming.
Using Flask with WebSockets
Flask is a lightweight and flexible web framework. To use WebSockets with Flask, we can rely on a library called Flask - SocketIO. It's built on top of the Socket.IO JavaScript library and provides a simple way to add WebSocket functionality to your Flask app.
Installation
First things first, you need to install Flask - SocketIO. You can do this using pip:


pip install flask - socketio
A Simple Example
Here's a basic example of a Flask app with WebSockets:
from flask import Flask, render_template
from flask_socketio import SocketIO, send
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):
send(message, broadcast=True)
if __name__ == '__main__':
socketio.run(app, debug=True)
In the HTML file (index.html), you'll need to include the Socket.IO JavaScript library and connect to the server:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<title>Flask WebSocket Example</title>
<script src="https://cdn.socket.io/4.4.1/socket.io.min.js"></script>
</head>
<body>
<input type="text" id="message" placeholder="Type a message">
<button onclick="sendMessage()">Send</button>
<div id="messages"></div>
<script>
var socket = io();
socket.on('message', function(msg) {
var item = document.createElement('li');
item.textContent = msg;
document.getElementById('messages').appendChild(item);
});
function sendMessage() {
var message = document.getElementById('message').value;
socket.send(message);
document.getElementById('message').value = '';
}
</script>
</body>
</html>
This simple chat - like application allows users to send messages, and all connected clients will receive those messages in real - time.
Using Bottle with WebSockets
Bottle is another lightweight web framework in Python. To use WebSockets with Bottle, we can use the bottle_websocket plugin.
Installation
Install the bottle_websocket plugin using pip:
pip install bottle_websocket
A Simple Example
Here's how you can create a basic WebSocket - enabled Bottle app:
from bottle import route, run
from bottle.ext.websocket import GeventWebSocketServer
from bottle.ext.websocket import websocket
clients = []
@route('/ws', apply=[websocket])
def echo(ws):
clients.append(ws)
while True:
msg = ws.receive()
if msg is not None:
for client in clients:
if client != ws:
client.send(msg)
else:
break
clients.remove(ws)
run(host='localhost', port=8080, server=GeventWebSocketServer)
In the HTML file, you can connect to the WebSocket server like this:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF - 8">
<title>Bottle WebSocket Example</title>
</head>
<body>
<input type="text" id="message" placeholder="Type a message">
<button onclick="sendMessage()">Send</button>
<div id="messages"></div>
<script>
var socket = new WebSocket('ws://localhost:8080/ws');
socket.onmessage = function(event) {
var item = document.createElement('li');
item.textContent = event.data;
document.getElementById('messages').appendChild(item);
};
function sendMessage() {
var message = document.getElementById('message').value;
socket.send(message);
document.getElementById('message').value = '';
}
</script>
</body>
</html>
Why Use Flask or Bottle with WebSockets?
- Real - Time Interaction: As mentioned earlier, WebSockets enable real - time data transfer. Whether you're building a social media app where users can see new posts instantly or a financial dashboard that updates stock prices in real - time, the combination of Flask or Bottle with WebSockets can make it happen.
- Lightweight: Both Flask and Bottle are lightweight frameworks. They don't come with a lot of unnecessary baggage, which means your app can be more efficient and easier to maintain.
- Python - Based: If you're already familiar with Python, using Flask or Bottle with WebSockets is a breeze. You can leverage your existing Python knowledge to build powerful web applications.
Our Offerings as a Supplier
As a Flask and Bottle supplier, we offer a wide range of products and services. For example, we have high - quality development kits that can help you get started with Flask and Bottle projects. And if you're in the market for a great way to keep your coffee warm while you're coding, check out our Stainless Steel Insulated Coffee Pot. It's perfect for those long coding sessions!
If you're interested in our Flask and Bottle - related products or services, or if you have any questions about using them with WebSockets, we'd love to hear from you. Whether you're a small startup or a large enterprise, we can provide the support you need to take your web development projects to the next level. Reach out to us to start a procurement discussion, and let's build something amazing together!
References
- Flask - SocketIO documentation
- Bottle - WebSocket plugin documentation
- Socket.IO official documentation





