在Flask中實現WebSocket可以使用Flask-SocketIO擴展。Flask-SocketIO是一個基于Socket.IO的實時Web應用程序框架,可以輕松地在Flask應用程序中添加WebSocket功能。
以下是一個簡單的示例代碼,演示如何在Flask應用程序中使用Flask-SocketIO實現WebSocket:
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(message):
print('received message: ' + message)
socketio.send(message)
if __name__ == '__main__':
socketio.run(app, debug=True)
在上面的代碼中,我們首先創建了一個Flask應用程序并初始化SocketIO對象。然后我們定義了一個路由處理器來渲染一個簡單的HTML模板。最后,我們使用@socketio.on
裝飾器來定義一個處理消息的函數,在接收到客戶端發送過來的消息后,會將消息原樣發送回去。
在HTML模板中,你可以使用Socket.IO的JS客戶端庫來連接到WebSocket服務器。以下是一個簡單的HTML模板示例:
<!DOCTYPE html>
<html>
<head>
<title>WebSocket Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"></script>
<script>
var socket = io();
socket.on('connect', function() {
console.log('Connected to the server');
socket.send('Hello, server!');
});
socket.on('message', function(message) {
console.log('Received message: ' + message);
});
</script>
</head>
<body>
<h1>WebSocket Example</h1>
</body>
</html>
在上面的HTML模板中,我們首先引入Socket.IO的JS客戶端庫,然后創建一個新的Socket.IO實例,并監聽connect
事件來發送一條消息給服務器。然后我們監聽message
事件來處理服務器發送過來的消息。
通過Flask-SocketIO擴展,你可以輕松地實現WebSocket功能,并與服務器實時通信。