Files
IM-server-new/tools_scripts/twoClientsWithSameID.groovy
T

52 lines
1.9 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!"
client1.disconnect()
println "Client1 disconnected"
client2.disconnect()
println "Client2 disconnected"
publisher.disconnect()
println "publisher disconnected"