mirror of
https://github.com/HiMeditator/auto-caption.git
synced 2026-02-13 19:23:26 +08:00
refactor(项目): 尝试 Python 语音识别和内容发送
This commit is contained in:
61
python-subprocess/wsconn.py
Normal file
61
python-subprocess/wsconn.py
Normal file
@@ -0,0 +1,61 @@
|
||||
import json
|
||||
import websockets
|
||||
|
||||
class WebSocketServer:
|
||||
|
||||
def __init__(self):
|
||||
self.server = None
|
||||
self.websocket = None
|
||||
|
||||
async def start(self, port=8765):
|
||||
"""启动 WebSocket 服务器"""
|
||||
self.server = await websockets.serve(self.handle_client, "localhost", port)
|
||||
print(f"INFO websocket server started on ws://localhost:{port}")
|
||||
|
||||
async def stop(self):
|
||||
"""关闭 WebSocket 服务器"""
|
||||
if self.server:
|
||||
try:
|
||||
if self.websocket:
|
||||
await self.close()
|
||||
self.server.close()
|
||||
await self.server.wait_closed()
|
||||
print("INFO server closed successfully")
|
||||
except Exception as e:
|
||||
print(f"ERROR failed to close server: {e}")
|
||||
finally:
|
||||
self.server = None
|
||||
|
||||
async def handle_client(self, websocket, path="/"):
|
||||
"""处理客户端连接"""
|
||||
try:
|
||||
self.websocket = websocket
|
||||
async for message in websocket:
|
||||
print(f"INFO received: {message}")
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
print("INFO client disconnected")
|
||||
self.websocket = None
|
||||
|
||||
async def send(self, data):
|
||||
"""向连接的客户端发送数据"""
|
||||
if self.websocket:
|
||||
try:
|
||||
await self.websocket.send(json.dumps(data))
|
||||
print(f"INFO sent: {data}")
|
||||
return True
|
||||
except websockets.exceptions.ConnectionClosed:
|
||||
print("ERROR: Client disconnected while sending data")
|
||||
self.websocket = None
|
||||
return False
|
||||
return False
|
||||
|
||||
async def close(self):
|
||||
"""安全地断开WebSocket连接"""
|
||||
if self.websocket:
|
||||
try:
|
||||
await self.websocket.close()
|
||||
print("INFO connection closed successfully")
|
||||
except Exception as e:
|
||||
print(f"ERROR failed to close connection: {e}")
|
||||
finally:
|
||||
self.websocket = None
|
||||
Reference in New Issue
Block a user