This issue is a meta issue to track all the changes that needs to be done in order to support MQTT5 version of the protocol.
[x] Update the Netty to the latest to have full MQTT 5 version protocol support #696
[ ] Connection management
[x] accepts a v5 connection message
[x] avoid to resend PUBLISH and PUBREL with a timed handler, spec [MQTT-4.4.0-1]
"When a Client reconnects with Clean Start set to 0 and a session is present, both the Client and Server MUST resend any unacknowledged PUBLISH packets (where QoS > 0) and PUBREL packets using their original Packet Identifiers. This is the only circumstance where a Client or Server is REQUIRED to resend messages. Clients and Servers MUST NOT resend messages at any other time." #697
[x] Reply to a connect with the capabilites offered (Retain Available, Maximum QoS, Server Keep Alive) in ConnACK properties. #709
[x] Reply with proper CONNACK reason strings and reason codes. #713
[x] Switch from cleanSession to cleanStart flag and SessionExpiryInterval property #753 and #764
[x] #767
The Server delays publishing the Client’s Will Message until the Will Delay Interval has passed
or the Session ends, whichever happens first. If a new Network Connection to this Session
is made before the Will Delay Interval has passed, the Server MUST NOT send the Will Message [MQTT-3.1.3-9].
[ ] #789
[ ] Assigned ClientID: In cases where the ClientID is assigned by the Server, return the assigned ClientID. This also lifts the restriction that Server assigned ClientIDs can only be used with Clean Session=1 connections.
[ ] Server reference: Allow the Server to specify an alternate Server to use on CONNACK or DISCONNECT. This can be used as a redirect or to do provisioning.
[ ] Maximum Packet Size: Allow the Client and Server to independently specify the maximum packet size they support. It is an error for the session partner to send a larger packet.
[x] Subscription
[x] Shared Subscriptions: Add shared subscription support allowing for load balanced consumers of a subscription. #791
[x] Subscription ID: Allow a numeric subscription identifier to be specified on a SUBSCRIBE, and returned on the message when it is delivered. This allows the Client to determine which subscription or subscriptions caused the message to be delivered. #801
[x] Subscription options: Provide subscription options primarily defined to allow for message bridge applications. These include an option to not send messages originating on this Client (noLocal), and options for handling retained messages on subscribe. #808
[ ] Various aspects
[x] Message expiry: Allow an expiry interval to be set when a message is published. #818
[x] #825
[x] #829
[ ] #847
[ ] User properties: Add User Properties to most packets. User properties on PUBLISH are included with the message and are defined by the Client applications. The user properties on PUBLISH and Will Properties are forwarded by the Server to the receiver of the message. User properties on the CONNECT, SUBSCRIBE, and UNSUBSCRIBE packets are defined by the Server implementation. The user properties on CONNACK PUBACK, PUBREC, PUBREL, PUBCOMP, SUBACK, UNSUBACK and AUTH packets are defined by the sender, and are unique to the sender implementation. The meaning of user properties is not defined by MQTT.
[ ] Optional Server feature availability: Define a set of features which the Server does not allow and provide a mechanism for the Server to specify this to the Client. The features which can be specified in this way are: Maximum QoS, Retain Available, Wildcard Subscription Available, Subscription Identifier Available, and Shared Subscription Available. It is an error for the Client to use features that the Server has declared are not available.
[ ] Enhanced authentication: Provide a mechanism to enable challenge/response style authentication including mutual authentication. This allows SASL style authentication to be used if supported by both Client and Server, and includes the ability for a Client to re-authenticate within a connection.
[ ] #859
Other secondary features
[ ] provide a way to define (in config file maybe) the User properties to return with CONNACK.
[ ] provide a way to define Server reference in CONNACK and DISCONNECT.
This issue is a meta issue to track all the changes that needs to be done in order to support MQTT5 version of the protocol.
[x] Update the Netty to the latest to have full MQTT 5 version protocol support #696
[ ] Connection management
PUBLISH
andPUBREL
with a timed handler, spec [MQTT-4.4.0-1] "When a Client reconnects with Clean Start set to 0 and a session is present, both the Client and Server MUST resend any unacknowledgedPUBLISH
packets (where QoS > 0) andPUBREL
packets using their original Packet Identifiers. This is the only circumstance where a Client or Server is REQUIRED to resend messages. Clients and Servers MUST NOT resend messages at any other time." #697CONNACK
reason strings and reason codes. #713cleanSession
tocleanStart
flag andSessionExpiryInterval
property #753 and #764[x] Subscription
[ ] Various aspects
Other secondary features
User properties
to return withCONNACK
.Server reference
inCONNACK
andDISCONNECT
.Useful refs