import asyncio
import time
from flowsdk import FlowMqttClient
def on_message(topic: str, payload: bytes, qos: int):
print(f"******** MSG RECEIVED ********")
print(f"Topic: {topic}")
print(f"Payload: {payload.decode(errors='replace')}")
print(f"QoS: {qos}")
print(f"******************************")
async def main():
client_id = f"python_proper_{int(time.time() % 10000)}"
client = FlowMqttClient(client_id, on_message=on_message)
try:
host = "broker.emqx.io"
port = 1883
print(f"Connecting to {host}:{port}...")
await client.connect(host, port)
print("✅ Connected!")
print("Subscribing to test/python/proper...")
await client.subscribe("test/python/proper", 1)
print("✅ Subscribe completed!")
print("Publishing message...")
await client.publish("test/python/proper", b"Hello from Proper Client!", 1)
print("✅ Publish completed!")
print("Waiting for messages...")
await asyncio.sleep(2)
finally:
print("Disconnecting...")
await client.disconnect()
print("✅ Disconnected!")
if __name__ == "__main__":
asyncio.run(main())