26 lines
693 B
Python
Executable File
26 lines
693 B
Python
Executable File
from fastapi import APIRouter, WebSocket, WebSocketDisconnect
|
|
from services.upload_file.upload_ws import job_state
|
|
from api.routers.ws.manager import manager
|
|
|
|
router = APIRouter()
|
|
|
|
@router.websocket("/ws/test")
|
|
async def ws_test(ws: WebSocket):
|
|
await ws.accept()
|
|
await ws.send_text("OK")
|
|
|
|
|
|
@router.websocket("/ws/job/{job_id}")
|
|
async def ws_job(job_id: str, ws: WebSocket):
|
|
await manager.connect(job_id, ws)
|
|
|
|
# kirim progress terakhir (jika reconnect)
|
|
if job_id in job_state:
|
|
await ws.send_json(job_state[job_id])
|
|
|
|
try:
|
|
while True:
|
|
await ws.receive_text() # keep alive
|
|
except WebSocketDisconnect:
|
|
manager.disconnect(job_id, ws)
|