BG5 commited on
Commit
e83f3cd
·
verified ·
1 Parent(s): 307ae22

Update fun.py

Browse files
Files changed (1) hide show
  1. fun.py +11 -36
fun.py CHANGED
@@ -41,55 +41,30 @@ async def websocket_proxy(websocket: WebSocket, path: str):
41
  logger.info(f"Forwarding WebSocket to: {target_url}")
42
 
43
  try:
44
- # 创建自定义连接
45
- async def create_connection():
46
- return await websockets.connect(
47
- target_url,
48
- # extra_headers={"Host": "127.0.0.1"},
49
- ping_interval=20,
50
- ping_timeout=30
51
- )
52
-
53
- target_ws = await create_connection()
54
-
55
- async def forward_client_to_server():
56
- try:
57
  while True:
58
- # 明确处理文本和二进制消息
59
  message = await websocket.receive()
60
  if message["type"] == "websocket.receive.text":
61
  await target_ws.send(message["text"])
62
- logger.info(f"Sent text: {message['text'][:100]}")
63
- elif message["type"] == "websocket.receive.bytes":
64
- await target_ws.send(message["bytes"])
65
- logger.info(f"Sent bytes: {message['bytes'][:100]}")
66
- except Exception as e:
67
- logger.error(f"Client->Server error: {e}")
68
- raise
69
 
70
- async def forward_server_to_client():
71
- try:
72
  while True:
73
  message = await target_ws.recv()
74
  if isinstance(message, str):
75
  await websocket.send_text(message)
76
- logger.info(f"Received text: {message[:100]}")
77
  elif isinstance(message, bytes):
78
  await websocket.send_bytes(message)
79
- logger.info(f"Received bytes: {message[:100]}")
80
- except Exception as e:
81
- logger.error(f"Server->Client error: {e}")
82
- raise
83
 
84
- await asyncio.gather(
85
- forward_client_to_server(),
86
- forward_server_to_client()
87
- )
88
-
89
- except WebSocketDisconnect:
90
- logger.info("Client disconnected")
91
  except Exception as e:
92
- logger.error(f"WebSocket error: {str(e)}")
93
  await websocket.close()
 
94
  if __name__ == "__main__":
95
  uvicorn.run("fun:app", host="0.0.0.0", port=8000, reload=True)
 
41
  logger.info(f"Forwarding WebSocket to: {target_url}")
42
 
43
  try:
44
+ async with websockets.connect(target_url) as target_ws:
45
+ async def forward_client_to_server():
 
 
 
 
 
 
 
 
 
 
 
46
  while True:
 
47
  message = await websocket.receive()
48
  if message["type"] == "websocket.receive.text":
49
  await target_ws.send(message["text"])
50
+ logger.info(f"Sent to Chrome: {message['text'][:100]}")
 
 
 
 
 
 
51
 
52
+ async def forward_server_to_client():
 
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
+ forward_client_to_server(),
63
+ forward_server_to_client()
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)