- Increase minimum Ruby version to 2.5
- Change several methods to take kwargs
- Remove
getvs.get_packet; just always return packets from get getno longer takes an optional topic to subscribe to; just callsubscribe- Remove
last_ping_responsesince it's not recorded anymore - Remove deprecated
remote_hostandremote_port connectno longer takes an optional client id; just set it beforehand- Add
batch_publishmethod for improving performance of QoS 1 publishes - Add
flushmethod to ensure writes have finished, since writes are now done in a background thread - Add
wait_for_ackparam tosubscribeandunsubscribe - Automatic reconnects
- Re-send Pub, Sub, and Unsub packets that don't get acked, even across server disconnects
- Only send keepalive pings if we haven't received any other packets, and measure from the last packet received, instead of the last ping sent
- Improve CPU usage by only checking for timeouts at the time of the timeout, instead of polling
- Switched default protocol version to 3.1.1
- Added support for Server Name Identification (SNI)
- Fix for unescaping user/password in URI
- Fix for bug in MQTT::Proxy class
- Add the ability to ignore retained packets when subscribed.
- Fix problem of wrong Puback packet ID
- Don't keepalive ping if disconnected
- Immediately close socket after failed Connack
- FakeServer improvements
- Fix for working with mathn library.
- Added puback handling for QoS level 1
- Low-level MQTT-SN packet parsing support
- Allow certs to be set directly instead of just by file
- Allow keyphrase for certs to be passed through
- Put 'disconnect' inside an 'ensure' block
- Fix for error on publish with frozen payload
- Fix for packets always getting id 1
- Improvements to tests
- Added
last_ping_responseto attribute toMQTT::Client
- Added support for MQTT protocol version 3.1.1
- Renamed a number of methods/attributes:
- Renamed
:granted_qosto:return_codes - Renamed
:remote_portto:port - Renamed
:remote_hostto:host - Renamed
:message_idto:id - Renamed
:protocol_versionto:protocol_level - Renamed
MQTT_BROKERenvironment variable toMQTT_SERVER
- Renamed
- Added more checks to ensure that the 3.1.1 protocol specs are adhered to
- Added a Library Overview section to the README
- Added links to the protocol specification to README
- Improvements to the YARD API documentation
- Don't display payload in inspect if it contains non-visible ASCII characters
- Upgraded to rspec 3
- Various minor bug fixes and corrections
- Added SSL/TLS support
- Added support for passing connection details using a URI
- Added support for using the
MQTT_BROKERenvironment variable - Allow passing array of topics to Client#unsubscribe
- Allow more combinations of arguments to be passed to a new Client
- No longer defaults to ‘localhost’ if there is no server configured
- Fixed more 'unused variable' warnings
- Documentation improvements
- Ruby 1.8 fixes
- Ruby 2 fixes
- Changed license to MIT, to simplify licensing concerns
- Improvements for UTF-8 handling under Ruby 1.9
- Added
get_packetmethod - Added support for a keep-alive value of 0
- Added a #inspect method to the Packet classes
- Added checks for the protocol name and version
- Added check to ensure that packet body isn't too big
- Added validation of QoS value
- Added example of using authentication
- Fixed 'unused variable' warnings
- Reduced duplicated code in packet parsing
- Improved testing
- Created fake server and integration tests
- Better test coverage
- Added more tests for error states
- Fixes for Ruby 1.9.3 by Mike English
- Fix for
client_idtypo by Anubisss - Added methods to inspect the incoming message queue:
queue_empty?andqueue_length - Fixed incorrect implementation of the parsing and serialising of Subscription Acknowledgement packets
- Changed test mocking from Mocha to rspec-mocks
- Implemented Last Will and Testament feature
- Renamed dup attribute to duplicate to avoid method name clash
- Made the random
client_idgenerator a public class method
- You can now pass a topic and block to client.get
- Added MQTT::Client.connect class method
- Implemented setting username and password (MQTT 3.1)
- Renamed
clean_startto ``clean_session``` - Started using autoload to load classes
- Modernised Gem building mechanisms
- Re-factored packet encoding/decoding into one class per packet type
- Added MQTT::Proxy class for implementing an MQTT proxy
- Added checking of Connection Acknowledgement
- Automatic client identifier generation
- Added support for packets longer than 127 bytes
- Initial Release