下面是关于“flask上使用websocket的方法示例”的完整攻略。
什么是WebSocket?
WebSocket是一种基于TCP协议的新型网络通信协议,相比HTTP协议,它具有以下优点:
- 长连接:WebSocket是一种长连接,可以实时的双向通讯,我们不需要反复的建立连接和释放连接,节省了很多浏览器和服务器的开销。
- 实时性:WebSocket具有实时通讯的能力,可以在服务器端主动向客户端推送数据,而不需要客户端不断请求服务器获取数据。
- 适应性:WebSocket协议适用于多种场景,如游戏、股票实时行情等。
Flask上使用WebSocket示例1
Flask中可以使用依赖于WebSocket的扩展库Flask-SocketIO来实现WebSocket通信。下面是一个使用示例:
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 test_connect():
print('Client Connected')
@socketio.on('disconnect')
def test_disconnect():
print('Client disconnected')
@socketio.on('chat message')
def handle_message(data):
print('received message: ' + data['message'])
socketio.emit('chat message', data)
if __name__ == '__main__':
socketio.run(app)
这是一个简单的聊天室应用。在客户端向服务器发送消息时,服务器会将这条消息发送给所有客户端。
Flask上使用WebSocket示例2
下面是一个更加复杂的Flask-SocketIO的使用示例,包含多个房间的聊天室:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit, join_room, leave_room
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('connect')
def test_connect():
print('Client Connected')
@socketio.on('disconnect')
def test_disconnect():
print('Client disconnected')
@socketio.on('join')
def on_join(data):
username = data['username']
room = data['room']
join_room(room)
socketio.emit('my event', username + ' has entered the room.', room=room)
@socketio.on('leave')
def on_leave(data):
username = data['username']
room = data['room']
leave_room(room)
socketio.emit('my event', username + ' has left the room.', room=room)
@socketio.on('chat_message')
def handle_message(data):
room = data['room']
message = data['message']
username = data['username']
emit('chat_message', {'message': message, 'username': username}, room=room)
if __name__ == '__main__':
socketio.run(app)
这个示例中,可以加入指定的聊天室并进行聊天,还可以离开聊天室。前端的代码需要借助Socket.IO.js来实现聊天室的交互。
希望我的回答能够帮助你学习Flask上如何使用WebSocket,如果你有任何疑问,欢迎随时提出。谢谢!
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:flask上使用websocket的方法示例 - Python技术站