在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功能,并与服务器实时通信。