56 lines
2.0 KiB
Groovy
56 lines
2.0 KiB
Groovy
@GrabResolver(name='Paho', root='https://repo.eclipse.org/content/repositories/paho-releases/')
|
|
@Grab(group='org.eclipse.paho', module='org.eclipse.paho.client.mqttv3', version='1.0.1', ext='jar')
|
|
|
|
|
|
import org.eclipse.paho.client.mqttv3.MqttClient
|
|
import org.eclipse.paho.client.mqttv3.MqttMessage
|
|
import org.eclipse.paho.client.mqttv3.MqttException
|
|
import org.eclipse.paho.client.mqttv3.persist.MqttDefaultFilePersistence
|
|
|
|
String host = args[0]
|
|
|
|
String tmpDir = System.getProperty("java.io.tmpdir")
|
|
MqttDefaultFilePersistence dataStore1 = new MqttDefaultFilePersistence(tmpDir + "/client1")
|
|
MqttClient client1 = new MqttClient("tcp://${host}:1883", "ConnectedClient", dataStore1)
|
|
client1.connect()
|
|
println "Client1 connected"
|
|
sleep(3000)
|
|
|
|
//now connect a second client but with the same ID
|
|
MqttDefaultFilePersistence dataStore2 = new MqttDefaultFilePersistence(tmpDir + "/client2")
|
|
MqttClient client2 = new MqttClient("tcp://${host}:1883", "ConnectedClient", dataStore2)
|
|
client2.connect()
|
|
println "Client2 connected"
|
|
try {
|
|
client1.subscribe("topic", 2)
|
|
println "BAD! Client1 subscribed to topic but its session has to be dropped out by client2"
|
|
} catch (Exception ex) {
|
|
println "Ok, client1 has been dropped out"
|
|
}
|
|
sleep(3000)
|
|
|
|
//now connect a second client but with the same ID
|
|
MqttDefaultFilePersistence dataStorePublisher = new MqttDefaultFilePersistence(tmpDir + "/publisher")
|
|
MqttClient publisher = new MqttClient("tcp://${host}:1883", "Publisher", dataStorePublisher)
|
|
publisher.connect()
|
|
println "publisher connected"
|
|
client2.subscribe("topic", 2)
|
|
println "Client2 subscribed to topic"
|
|
sleep(3000)
|
|
|
|
print "Publisher is going to publish.."
|
|
publisher.publish('topic', 'Hello world!!'.bytes, 2, false)
|
|
println "Ok mate, done!"
|
|
|
|
try {
|
|
client1.disconnect()
|
|
println "BAD! Client1 has been able to call disconnect, but it has to be already dropped out"
|
|
} catch (Exception ex) {
|
|
println "Ok, client1 can't disconnect because it was already disconnected"
|
|
}
|
|
|
|
client2.disconnect()
|
|
println "Client2 disconnected"
|
|
|
|
publisher.disconnect()
|
|
println "publisher disconnected" |