python的flask websocket如何使用
时间: 2024-03-15 09:16:37 浏览: 26
使用Flask实现WebSocket需要使用Flask-SocketIO扩展。下面是一个使用Flask-SocketIO实现WebSocket的简单示例:
1.安装Flask-SocketIO
```python
pip install flask-socketio
```
2.创建一个Flask应用
```python
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
if __name__ == '__main__':
socketio.run(app)
```
3.在HTML中添加WebSocket脚本
```html
<!doctype html>
<html>
<head>
<title>Flask-SocketIO Example</title>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js"></script>
<script type="text/javascript">
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', function() {
console.log('Connected!');
});
socket.on('message', function(data) {
console.log('Received message: ' + data);
});
socket.on('disconnect', function() {
console.log('Disconnected!');
});
</script>
</head>
<body>
<h1>Flask-SocketIO Example</h1>
</body>
</html>
```
4.在服务器端发送消息
```python
from flask import Flask, render_template
from flask_socketio import SocketIO
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('message')
def handle_message(data):
print('Received message: ' + data)
socketio.send('Server received message: ' + data)
if __name__ == '__main__':
socketio.run(app)
```
5.在服务器端广播消息
```python
from flask import Flask, render_template
from flask_socketio import SocketIO, send, emit
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def handle_connect():
print('Client connected')
@socketio.on('disconnect')
def handle_disconnect():
print('Client disconnected')
@socketio.on('message')
def handle_message(data):
print('Received message: ' + data)
socketio.send('Server received message: ' + data)
@socketio.on('broadcast')
def handle_broadcast(data):
print('Received broadcast: ' + data)
socketio.emit('message', 'Server received broadcast: ' + data, broadcast=True)
if __name__ == '__main__':
socketio.run(app)
```
这就是使用Flask-SocketIO实现WebSocket的基本步骤。您可以使用其他事件来处理其他操作,如加入房间、离开房间、发送私人消息等。