python用fastapi搭创建了一个WebSocket服务器
但是我找遍论坛所有的模块,都不行,不知道是哪出的问题,大神帮看一下
[Python] 纯文本查看 复制代码 from fastapi import FastAPI, WebSocket, WebSocketDisconnect
from pydantic import BaseModel
import asyncio
import websockets
import gzip
import random
import re
import string
import requests
from protobuf.douyin import *
app = FastAPI()
class LiveIdRequest(BaseModel):
live_id: str
class ConnectionManager:
def __init__(self):
self.active_connections: list[WebSocket] = []
async def connect(self, websocket: WebSocket):
await websocket.accept()
self.active_connections.append(websocket)
def disconnect(self, websocket: WebSocket):
self.active_connections.remove(websocket)
async def send_personal_message(self, message: str, websocket: WebSocket):
await websocket.send_text(message)
async def broadcast(self, message: str):
for connection in self.active_connections:
await connection.send_text(message)
manager = ConnectionManager()
@app.post("/start_live")
async def start_live(request: LiveIdRequest):
live_id = request.live_id
fetcher = DouyinLiveWebFetcher(live_id)
asyncio.create_task(fetcher.start(manager))
return {"message": "Live stream started"}
@app.websocket("/ws")
async def websocket_endpoint(websocket: WebSocket):
await manager.connect(websocket)
try:
while True:
data = await websocket.receive_text()
await manager.send_personal_message(f"Message text was: {data}", websocket)
except WebSocketDisconnect:
manager.disconnect(websocket)
class DouyinLiveWebFetcher:
def __init__(self, live_id):
self.live_id = live_id
self.messages = []
self.__ttwid = None
self.__room_id = None
self.live_url = "https://live.douyin.com/"
self.user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
async def start(self, manager: ConnectionManager):
await self._connectWebSocket(manager)
async def _connectWebSocket(self, manager: Connection
补充内容 (2024-7-9 21:12):
集_WSID = 客户Duan_连接 (“ws://localhost:8000/ws”, , , )
调试出来:集_WSID=1
然后立马就WS断开时间(上图有调试信息)
补充内容 (2024-7-9 21:15):
我用在线网页上的WS连接,都是可以的,就是易语言不行,不知道是不是python创建的时候哪些参数没搞好 |