Flask-SocketIO,一个高效的 Python WebSocket 库!
为了使用Flask-SocketIO创建一个简单的聊天应用,并结合命名空间、房间和自定义事件等功能,我们可以按照以下步骤进行:
安装Flask-SocketIO: 首先,确保你已经安装了Flask-SocketIO。如果没有安装,可以使用pip进行安装:
pip install flask-socketio创建基本的Flask应用: 创建一个名为
app.py的文件,并添加以下代码:from flask import Flask, render_template, request 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('message', namespace='/chat') def handle_chat_message(msg): emit('message', msg, broadcast=True, namespace='/chat') @socketio.on('notification', namespace='/notifications') def handle_notification(msg): emit('notification', msg, broadcast=True, namespace='/notifications') @socketio.on('join', namespace='/chat') def on_join(data): username = data['username'] room = data['room'] join_room(room) emit('message', f'{username} has entered the room.', to=room) @socketio.on('leave', namespace='/chat') def on_leave(data): username = data['username'] room = data['room'] leave_room(room) emit('message', f'{username} has left the room.', to=room) if __name__ == '__main__': socketio.run(app, debug=True)创建HTML模板: 在项目目录下创建一个名为
templates的文件夹,并在其中创建一个名为index.html的文件,添加以下代码:<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Chat App</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.1/socket.io.js"></script> <script type="text/javascript" charset="utf-8"> document.addEventListener('DOMContentLoaded', (event) => { var socket = io.connect('http://' + document.domain + ':' + location.port); socket.on('connect', function() { socket.emit('join', {'username': 'user' + Math.floor(Math.random() * 100), 'room': 'general'}); }); socket.on('message', function(msg) { var item = document.createElement("li"); item.textContent = msg; document.getElementById("messages").appendChild(item); }); document.getElementById('sendbutton').onclick = function() { socket.emit('message', {'text': document.getElementById('messageinput').value, 'room': 'general'}); }; }); </script> </head> <body> <ul id="messages"></ul> <input type="text" id="messageinput"> <button id="sendbutton">Send</button> </body> </html>运行应用: 在终端中运行以下命令启动Flask应用:
python app.py访问应用: 打开浏览器并访问
http://127.0.0.1:5000/,你应该会看到一个简单的聊天界面。你可以输入消息并发送,其他用户也会看到你的消息。
通过以上步骤,你已经创建了一个基本的Flask-SocketIO应用,并使用命名空间、房间和自定义事件等功能实现了实时通讯功能。你可以根据需要进一步扩展和完善这个应用。