WebSocket yra galinga technologija, skirta sukurti dvikrypčius realaus laiko ryšio kanalus tarp serverių ir klientų. Toliau pateikiamas vadovas, kaip integruoti WebSocket į dvi populiarias sistemas Flask ir FastAPI.
Integruojasi WebSocket į Flask
1 veiksmas: įdiekite bibliotekas
Pirmiausia turite įdiegti flask
ir flask-socketio
bibliotekas naudodami šią komandą:
pip install Flask flask-socketio
2 veiksmas: nustatykite programą
Štai pavyzdys, kaip integruoti WebSocket į Flask programą:
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)
Aukščiau pateiktame kodo fragmente naudojame biblioteką flask-socketio
serveriui sukurti WebSocket. Funkcija handle_message
iškviečiama, kai klientas siunčia pranešimą, o serveris atsako paskelbdamas įvykį response
.
Integruojasi WebSocket į FastAPI
1 veiksmas: įdiekite bibliotekas
Įdiekite fastapi
ir uvicorn
bibliotekas naudodami šią komandą:
pip install fastapi uvicorn
2 veiksmas: nustatykite programą
Štai pavyzdys, kaip integruoti WebSocket į FastAPI programą:
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}")
Aukščiau pateiktame kodo fragmente naudojame FastAPI serverį sukurti WebSocket. Funkcija websocket_endpoint
priima WebSocket ryšius, klausosi klientų siunčiamų duomenų ir atsako siųsdama duomenis atgal klientui.
Išvada
Integravimas WebSocket į tokias populiarias sistemas kaip Flask ir FastAPI atveria galimybes kurti programas realiuoju laiku ir dvikryptį ryšį tarp serverių ir klientų.