Tạo ứng dụng chat đơn giản sử dụng Socket.IO trong Python
Hướng dẫn chi tiết cách tạo ứng dụng chat đơn giản bằng Python sử dụng Socket.IO và Flask, cho phép người dùng gửi và nhận tin nhắn theo thời gian thực.
Bài viết này sẽ hướng dẫn bạn từng bước để xây dựng một ứng dụng chat đơn giản sử dụng Flask và Socket.IO. Chúng ta sẽ thiết lập server để xử lý các kết nối và giao tiếp giữa client và server.
Mã Python:
# app.py
from flask import Flask, render_template
from flask_socketio import SocketIO, emit
app = Flask(__name__)
socketio = SocketIO(app)
@app.route('/')
def index():
return render_template('index.html')
@socketio.on('message')
def handle_message(msg):
print('Received message: ' + msg)
emit('message', msg, broadcast=True)
if __name__ == '__main__':
socketio.run(app)
Mã HTML:
<!-- templates/index.html -->
<!DOCTYPE html>
<html>
<head>
<title>Chat App</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.0.0/socket.io.js"></script>
<style>
#messages { list-style-type: none; }
#messages li { padding: 5px; }
</style>
</head>
<body>
<ul id="messages"></ul>
<input id="message-input" autocomplete="off"/><button id="send-button">Send</button>
<script>
const socket = io();
$('#send-button').click(function() {
const msg = $('#message-input').val();
socket.emit('message', msg);
$('#message-input').val('');
});
socket.on('message', function(msg) {
$('#messages').append($('<li>').text(msg));
});
</script>
</body>
</html>
Giải thích chi tiết từng dòng code:
-
app.py:
-
from flask import Flask, render_template
: Nhập các thư viện cần thiết từ Flask. -
from flask_socketio import SocketIO, emit
: Nhập Socket.IO để hỗ trợ giao tiếp thời gian thực. -
app = Flask(__name__)
: Khởi tạo ứng dụng Flask. -
socketio = SocketIO(app)
: Tạo đối tượng Socket.IO cho ứng dụng. -
@app.route('/')
: Định nghĩa route cho trang chính. -
def index()
: Hàm trả về template HTML. -
@socketio.on('message')
: Lắng nghe sự kiện 'message' từ client. -
emit('message', msg, broadcast=True)
: Gửi tin nhắn đến tất cả client. -
if __name__ == '__main__': socketio.run(app)
: Chạy server.
-
-
index.html:
- Tạo giao diện cơ bản với input để người dùng nhập tin nhắn và nút gửi.
- Sử dụng jQuery để xử lý sự kiện click và gửi tin nhắn đến server qua Socket.IO.
- Lắng nghe sự kiện 'message' để cập nhật danh sách tin nhắn trên giao diện.
Yêu cầu hệ thống:
- Python 3.x
- Flask
- Flask-SocketIO
Cách cài đặt các thư viện để chạy được đoạn mã Python trên:
Bạn có thể cài đặt các thư viện cần thiết bằng pip:
pip install Flask Flask-SocketIO
Lời khuyên:
- Hãy thử nghiệm với nhiều tính năng hơn như lưu trữ tin nhắn vào cơ sở dữ liệu hoặc thêm người dùng vào ứng dụng.
- Đảm bảo server được chạy trên môi trường có thể truy cập internet để thử nghiệm với nhiều client.