الاندماج WebSocket في Flask و FastAPI

WebSocket هي تقنية قوية لإنشاء قنوات اتصال ثنائية الاتجاه في الوقت الحقيقي بين الخوادم والعملاء. يوجد أدناه دليل حول كيفية الدمج WebSocket في إطارين شائعين ، Flask و FastAPI.

الاندماج WebSocket في Flask

الخطوة 1: تثبيت المكتبات

أولاً ، تحتاج إلى تثبيت flask والمكتبات flask-socketio باستخدام الأمر التالي:

pip install Flask flask-socketio

الخطوة 2: إعداد التطبيق

فيما يلي مثال على كيفية الدمج WebSocket في 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)  

في مقتطف الشفرة أعلاه ، نستخدم flask-socketio المكتبة لإنشاء WebSocket خادم. يتم استدعاء الوظيفة handle_message عندما يرسل العميل رسالة ، ويستجيب الخادم بإرسال response حدث.

الاندماج WebSocket في FastAPI

الخطوة 1: تثبيت المكتبات

قم بتثبيت fastapi والمكتبات uvicorn باستخدام الأمر التالي:

pip install fastapi uvicorn

الخطوة 2: إعداد التطبيق

فيما يلي مثال على كيفية الدمج WebSocket في 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}")

في مقتطف الشفرة أعلاه ، نستخدمها FastAPI لإنشاء WebSocket خادم. websocket_endpoint تقبل الوظيفة الاتصالات WebSocket ، وتستمع إلى البيانات المرسلة من قبل العملاء ، وتستجيب بإرسال البيانات مرة أخرى إلى العميل.

خاتمة

الاندماج WebSocket في أطر شائعة مثل Flask ويفتح FastAPI إمكانيات إنشاء تطبيقات في الوقت الفعلي واتصالات ثنائية الاتجاه بين الخوادم والعملاء.