Tích hợp WebSocket vào Flask và FastAPI

WebSocket là một công nghệ mạnh mẽ để thiết lập kênh giao tiếp hai chiều thời gian thực giữa máy chủ và máy khách. Dưới đây là hướng dẫn về cách tích hợp WebSocket vào hai framework phổ biến là Flask và FastAPI.

Tích hợp WebSocket vào Flask

Bước 1: Cài đặt thư viện

Trước hết, bạn cần cài đặt thư viện flaskflask-socketio bằng cách sử dụng lệnh sau:

pip install Flask flask-socketio

Bước 2: Thiết lập ứng dụng

Dưới đây là ví dụ về cách tích hợp WebSocket vào ứng dụng Flask:

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(message):
    emit('response', {'data': message})

if __name__ == '__main__':
    socketio.run(app)

Trong đoạn mã trên, chúng ta sử dụng thư viện flask-socketio để tạo máy chủ WebSocket. Hàm handle_message được gọi khi máy khách gửi một tin nhắn, sau đó máy chủ phản hồi bằng cách gửi một sự kiện response.

Tích hợp WebSocket vào FastAPI

Bước 1: Cài đặt thư viện

Cài đặt thư viện fastapiuvicorn bằng cách sử dụng lệnh sau:

pip install fastapi uvicorn

Bước 2: Thiết lập ứng dụng

Dưới đây là ví dụ về cách tích hợp WebSocket vào ứng dụng FastAPI:

from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse

app = FastAPI()

@app.get('/')
def get():
    return HTMLResponse(content=open("index.html").read())

@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    while True:
        data = await websocket.receive_text()
        await websocket.send_text(f"Server received: {data}")

Trong đoạn mã trên, chúng ta sử dụng FastAPI để tạo máy chủ WebSocket. Hàm websocket_endpoint chấp nhận kết nối WebSocket và lắng nghe dữ liệu gửi từ máy khách, sau đó phản hồi bằng cách gửi dữ liệu về máy khách.

Kết Luận

Tích hợp WebSocket vào các framework phổ biến như Flask và FastAPI mở ra khả năng tạo các ứng dụng thời gian thực và giao tiếp hai chiều giữa máy chủ và máy khách.