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:

  1. 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.
  2. 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.
Tags: Python, Socket.IO


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Hướng dẫn tạo form upload nhiều hình ảnh bằng Python

Hướng dẫn chi tiết cách tạo form upload nhiều hình ảnh sử dụng Flask - một framework Python đơn giản và hiệu quả.
Xác thực bằng JSON Web Token (JWT) trong Python

Hướng dẫn về cách sử dụng JSON Web Token (JWT) để xác thực trong ứng dụng Python. Bài viết sẽ giới thiệu cách tạo và xác thực token trong một ứng dụng web để bảo vệ API.
Các chức năng thường dùng khi sử dụng Selenium Chrome trong Python

Bài viết giới thiệu các chức năng thường dùng khi sử dụng Selenium với Chrome trong Python, giúp tự động hóa các tác vụ như tìm kiếm, tương tác với các phần tử trên trang web, và điều hướng trình duyệt.
Cách SELECT dữ liệu từ database MySQL bằng Python

Hướng dẫn cách kết nối và truy vấn dữ liệu từ database MySQL bằng Python sử dụng thư viện mysql-connector-python.
Xóa nền cho hình ảnh bằng thư viện Rembg trong Python

Hướng dẫn chi tiết cách xóa nền cho hình ảnh bằng Python và thư viện Rembg. Bài viết bao gồm mã nguồn và giải thích từng dòng mã.
Cách INSERT dữ liệu vào database MySQL bằng Python

Hướng dẫn cách chèn dữ liệu vào bảng trong database MySQL bằng Python sử dụng thư viện mysql-connector-python.
Tạo video từ hình ảnh bằng MoviePy

Hướng dẫn chi tiết cách tạo video từ các hình ảnh bằng Python và thư viện MoviePy. Bài viết bao gồm mã nguồn và giải thích từng dòng mã.
Tổng hợp tất cả các cách sử dụng hàm print trong Python

Hướng dẫn chi tiết về tất cả các cách sử dụng hàm print() trong Python, bao gồm các tùy chọn định dạng, tham số và cách sử dụng nâng cao.
Hướng dẫn làm giao diện ứng dụng Python bằng PyQT6

Hướng dẫn chi tiết cách tạo giao diện ứng dụng đơn giản bằng PyQT6 trong Python, kèm theo các bước cài đặt và giải thích từng dòng code.
Cách chuyển đổi file TensorFlow từ định dạng .pb sang .h5

Hướng dẫn chi tiết cách chuyển đổi mô hình TensorFlow từ định dạng file .pb sang .h5, giúp bạn dễ dàng lưu trữ và tải lại mô hình để sử dụng trong các ứng dụng machine learning.

Đã thêm vào giỏ hàng