-
Notifications
You must be signed in to change notification settings - Fork 174
Open
Labels
Description
Checklist
- I've searched the project's
issues
. - I've searched the project's
discussions
.
❓ Question
Hi,I set user properties as key is “client_info” to connect packet,when MQTT client connect, server can accept the connect packet with "client_info" properties.
But, when client reconnect because of network error etc, the "client_info" properties is absent.
Is the user properties cann't be set to reconnect packet?
1) In MQTT client code, I bind "client_info" properties as follow:
final Mqtt5BlockingClient client = Mqtt5Client.builder()
.identifier(getClientId())
.serverHost(HOST)
.serverPort(PORT)
.simpleAuth()
.username(USERNAME)
.password(ByteBuffer.wrap(PASSWORD.getBytes(StandardCharsets.UTF_8)))
.applySimpleAuth()
.automaticReconnect()
.initialDelay(60, TimeUnit.SECONDS)
.maxDelay(60, TimeUnit.SECONDS)
.applyAutomaticReconnect()
.buildBlocking();
final Mqtt5ConnectBuilder connectBuilder = Mqtt5Connect.builder()
.cleanStart(true)
// "client_info" properties
.userProperties().add("client_info", getClientInfo()).applyUserProperties()
.keepAlive(connectKeepAliveInSeconds());
// That's ok, server can accept the first connect packet with "client_info" properties
client.connect(connectBuilder.build());
......
2) In MQTT extensions, I handle the "client_info" properties as follows:
Services.securityRegistry().setAuthenticatorProvider(input -> new ClientAuthenticator());
......
public class ClientAuthenticator implements SimpleAuthenticator {
@Override
public void onConnect(final @NotNull SimpleAuthInput input, final @NotNull SimpleAuthOutput output) {
// I cann't get "client_info" properties on reconnect
final List<String> list = input.getConnectPacket().getUserProperties().getAllForName("client_info");
}
}
How can I set "client_info" properties on connect package and reconnect packet?
Is it possible to notify "client_info" through publish message?