import asyncio
from hbmqtt.client import MQTTClient
websocket_headers = {
             'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6', 'Cache-Control': 'no-cache', 'Connection': 'Upgrade', 'Origin': 'https://widgets-livetracker.nami.com', 'Host': 'trackermq.namitiyu.com', 'Pragma': 'no-cache',
            'Sec-WebSocket-Extensions': 'permessage-deflate; client_max_window_bits', 'Sec-WebSocket-Key':'8i6Yh1q7CbEAf13EKt5sBg==', 'Sec-WebSocket-Protocol': 'mqtt', 'Sec-WebSocket-Version': '13', 'Upgrade': 'websocket',
            'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36'
}
websocket_url = 'wss://trackermq.namitiyu.com/mqtt'
proxy_uri = 'http://CC7C1AF8:75247E958880@tun-uzqqwl.qg.net:18031'
async def main(ID_):
    client = MQTTClient()
    await client.connect('wss://push.namitiyu.com/ws')
    await client.subscribe([(f'live/m2/{ID_}', 0)])
    while True:
        message = await client.deliver_message()
        print(message)

# asyncio.get_event_loop().run_until_complete(main(3800505))



import hbmqtt
import asyncio
from hbmqtt.client import MQTTClient, ClientException
from hbmqtt.mqtt.constants import QOS_1
print(hbmqtt)

# 配置 WebSocket 连接的参数
config = {
    'keep_alive': 60,  # 控制发送 ping 的间隔时间，以秒为单位
    'ping_delay': 5,   # 设置 ping 请求的延迟时间，以秒为单位
    'auto_reconnect': True,
    'reconnect_max_interval': 60,
    'websockets': True,  # 启用 WebSocket
    'uri': websocket_url,  # WebSocket 连接的 URI
    'extra_headers': websocket_headers
}

async def connect_and_subscribe(ID_):
    client = MQTTClient(config=config)

    try:
        await client.connect(config['uri'])
        print("Connected to MQTT broker over WebSocket")
        # 订阅一个主题
        await client.subscribe([(f'live/m2/{ID_}', 0)])
        print("Subscribed to 'test/topic'")

        while True:
            # 等待消息
            message = await client.deliver_message()
            packet = message.publish_packet
            print(f"Received message: {packet.payload.data.decode()}")

    except ClientException as ce:
        print(f"Client exception: {ce}")

    finally:
        await client.disconnect()

loop = asyncio.get_event_loop()
loop.run_until_complete(connect_and_subscribe(4400588))