using Revise # remove when this package is completed using MQTTClient, GeneralUtils using Base.Threads # --------------------------------------- code width = 100 --------------------------------------- # function count_and_listen() total_count = 0 # MQTT on-message function function on_message(client::MQTTClient.MQTTClient, message::MQTTClient.MQTTMessage) msg = String(message.payload) println("Received MQTT message: $msg") try num = parse(Int, msg) total_count += num catch e println("Error parsing message: $e") end end # Connect to MQTT broker client = MQTTClient.MQTTClient("client-1", "tcp://localhost:1883") connect(client) subscribe(client, "topic", on_message) # Count from 1 to 1,000,000,000 for i in 1:1_000_000_000 total_count += i end # Disconnect from MQTT broker unsubscribe(client, "topic") disconnect(client) return total_count end # Spawn a process to run count_and_listen function task = @spawn count_and_listen() # Get the result result = fetch(task) # Stop the spawned task interrupt(task) using MQTTClient broker = "test.mosquitto.org" #Define the callback for receiving messages. function on_msg(topic, payload) info("Received message topic: [", topic, "] payload: [", String(payload), "]") end #Instantiate a client and connection. client, connection = MakeConnection(broker, 1883) connect(client, connection) #Set retain to true so we can receive a message from the broker once we subscribe #to this topic. publish(client, "jlExample", "Hello World!", retain=true) #Subscribe to the topic we sent a retained message to. subscribe(client, "jlExample", on_msg, qos=QOS_1) #Unsubscribe from the topic unsubscribe(client, "jlExample") #Disconnect from the broker. Not strictly needed as the broker will also #disconnect us if the socket is closed. But this is considered good form #and needed if you want to resume this session later. disconnect(client)