Update fun.py
Browse files
fun.py
CHANGED
@@ -38,33 +38,25 @@ async def proxy(request: Request, path: str):
|
|
38 |
async def websocket_proxy(websocket: WebSocket, path: str):
|
39 |
await websocket.accept()
|
40 |
target_url = f"{TARGET_WS_BASE}/{path}"
|
41 |
-
logger.info(f"Forwarding
|
42 |
|
43 |
try:
|
44 |
async with websockets.connect(target_url) as target_ws:
|
45 |
-
async def
|
46 |
while True:
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
while True:
|
54 |
-
message = await target_ws.recv()
|
55 |
-
if isinstance(message, str):
|
56 |
-
await websocket.send_text(message)
|
57 |
-
logger.info(f"Received from Chrome: {message[:100]}")
|
58 |
-
elif isinstance(message, bytes):
|
59 |
-
await websocket.send_bytes(message)
|
60 |
|
61 |
await asyncio.gather(
|
62 |
-
|
63 |
-
|
64 |
)
|
65 |
except Exception as e:
|
66 |
logger.error(f"Error: {e}")
|
67 |
-
await websocket.close()
|
68 |
|
69 |
if __name__ == "__main__":
|
70 |
uvicorn.run("fun:app", host="0.0.0.0", port=8000, reload=True)
|
|
|
38 |
async def websocket_proxy(websocket: WebSocket, path: str):
|
39 |
await websocket.accept()
|
40 |
target_url = f"{TARGET_WS_BASE}/{path}"
|
41 |
+
logger.info(f"Forwarding to: {target_url}")
|
42 |
|
43 |
try:
|
44 |
async with websockets.connect(target_url) as target_ws:
|
45 |
+
async def forward(from_ws, to_ws, direction):
|
46 |
while True:
|
47 |
+
data = await from_ws.receive()
|
48 |
+
logger.info(f"{direction} RAW DATA: {data}") # 打印原始数据
|
49 |
+
if isinstance(data, str):
|
50 |
+
await to_ws.send(data)
|
51 |
+
else:
|
52 |
+
await to_ws.send(data.bytes if hasattr(data, 'bytes') else data)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
53 |
|
54 |
await asyncio.gather(
|
55 |
+
forward(websocket, target_ws, "CLIENT->CHROME"),
|
56 |
+
forward(target_ws, websocket, "CHROME->CLIENT")
|
57 |
)
|
58 |
except Exception as e:
|
59 |
logger.error(f"Error: {e}")
|
|
|
60 |
|
61 |
if __name__ == "__main__":
|
62 |
uvicorn.run("fun:app", host="0.0.0.0", port=8000, reload=True)
|