Esempio n. 1
0
    def __init__(self, room_id, on_message, on_broken):
        self.room_id = room_id
        self.on_message = on_message
        self.on_broken = on_broken

        self.session = None
        self.task = None
        self.task_heartbeat = None
        self._url = WsApi.BILI_WS_URI
        self._join_pkg = WsApi.gen_join_room_pkg(room_id=self.room_id)
        self._hb_pkg = WsApi.gen_heart_beat_pkg()

        self._connect_times = 0
        self._reconnect_time = 0
Esempio n. 2
0
async def listen_ws(index: int, area_id: int, room_id: int):
    is_preparing = False
    session = aiohttp.ClientSession()
    async with session.ws_connect(url=DANMAKU_WS_URL) as ws:
        await ws.send_bytes(WsApi.gen_join_room_pkg(room_id=room_id))

        ws.monitor_room_id = room_id
        ws.area_id = area_id
        ALL_WS_CLIENTS.add(ws)

        async for msg in ws:
            if msg.type == aiohttp.WSMsgType.ERROR:
                break

            is_preparing = await proc_danmaku(area_id, room_id, msg.data)
            if is_preparing is True:
                break

    ALL_WS_CLIENTS.remove(ws)
    logging.info(f"Client closed. {index}-{area_id} -> {room_id}, "
                 f"By danmaku preparing: {is_preparing}")
Esempio n. 3
0
 async def on_connect(ws):
     logging.info("connected.")
     await ws.send(WsApi.gen_join_room_pkg(MONITOR_ROOM_ID))
Esempio n. 4
0
 async def on_connect(ws):
     await ws.send(WsApi.gen_join_room_pkg(room_id))
Esempio n. 5
0
 async def on_connect(ws):
     print(f"on_connect: {ws}")
     await ws.send(WsApi.gen_join_room_pkg(room_id))