README.md in mqtt-0.2.0 vs README.md in mqtt-0.3.0
- old
+ new
@@ -1,22 +1,38 @@
+[![Build Status](https://travis-ci.org/njh/ruby-mqtt.svg)](https://travis-ci.org/njh/ruby-mqtt)
+
ruby-mqtt
=========
-Pure Ruby gem that implements the MQTT protocol, a lightweight protocol for publish/subscribe messaging.
+Pure Ruby gem that implements the [MQTT] protocol, a lightweight protocol for publish/subscribe messaging.
-Installing
-----------
+Table of Contents
+-----------------
+* [Installation](#installation)
+* [Quick Start](#quick-start)
+* [Library Overview](#library-overview)
+* [Resources](#resources)
+* [License](#license)
+* [Contact](#contact)
-You may get the latest stable version from Rubygems:
+Installation
+------------
+
+You may get the latest stable version from [Rubygems]:
+
$ gem install mqtt
+Alternatively, to use a development snapshot from GitHub using [Bundler]:
-Synopsis
---------
+ gem 'mqtt', :git => 'https://github.com/njh/ruby-mqtt.git'
+
+Quick Start
+-----------
+
require 'rubygems'
require 'mqtt'
# Publish example
MQTT::Client.connect('test.mosquitto.org') do |c|
@@ -30,22 +46,110 @@
puts "#{topic}: #{message}"
end
end
+
+Library Overview
+----------------
+
+### Connecting ###
+
+A new client connection can be created by passing either a [MQTT URI], a host and port or by passing a hash of attributes.
+
+ client = MQTT::Client.connect('mqtt://myserver.example.com')
+ client = MQTT::Client.connect('mqtts://user:pass@myserver.example.com')
+ client = MQTT::Client.connect('myserver.example.com')
+ client = MQTT::Client.connect('myserver.example.com', 18830)
+ client = MQTT::Client.connect(:host => 'myserver.example.com', :port => 1883 ... )
+
+TLS/SSL is not enabled by default, to enabled it, pass ```:ssl => true```:
+
+ client = MQTT::Client.connect(
+ :host => 'test.mosquitto.org',
+ :port => 8883
+ :ssl => true
+ )
+
+Alternatively you can create a new Client object and then configure it by setting attributes. This example shows setting up client certificate based authentication:
+
+ client = MQTT::Client.new
+ client.host = 'myserver.example.com'
+ client.ssl = true
+ client.cert_file = path_to('client.pem')
+ client.key_file = path_to('client.key')
+ client.ca_file = path_to('root-ca.pem')
+ client.connect()
+
+The connection can either be made without the use of a block:
+
+ client = MQTT::Client.connect('test.mosquitto.org')
+ # perform operations
+ client.disconnect()
+
+Or, if using a block, with an implicit disconnection at the end of the block.
+
+ MQTT::Client.connect('test.mosquitto.org') do |client|
+ # perform operations
+ end
+
+For more information, see and list of attributes for the [MQTT::Client] class and the [MQTT::Client.connect] method.
+
+
+### Publishing ###
+
+To send a message to a topic, use the ```publish``` method:
+
+ client.publish(topic, payload, retain=false)
+
+The method will return once the message has been sent to the MQTT server.
+
+For more information see the [MQTT::Client#publish] method.
+
+
+### Subscribing ###
+
+You can send a subscription request to the MQTT server using the subscribe method. One or more [Topic Filters] may be passed in:
+
+ client.subscribe( 'topic1' )
+ client.subscribe( 'topic1', 'topic2' )
+ client.subscribe( 'foo/#' )
+
+For more information see the [MQTT::Client#subscribe] method.
+
+
+### Receiving Messages ###
+
+To receive a message, use the get method. This method will block until a message is available. The topic is the name of the topic the message was sent to. The message is a string:
+
+ topic,message = client.get
+
+Alternatively, you can give the get method a block, which will be called for every message received and loop forever:
+
+ client.get do |topic,message|
+ # Block is executed for every message received
+ end
+
+For more information see the [MQTT::Client#get] method.
+
+
+
Limitations
-----------
* Only QOS 0 currently supported
+ * Automatic re-connects to the server are not supported
Resources
---------
+* API Documentation: http://rubydoc.info/gems/mqtt
+* Protocol Specification v3.1.1: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html
+* Protocol Specification v3.1: http://public.dhe.ibm.com/software/dw/webservices/ws-mqtt/mqtt-v3r1.html
* MQTT Homepage: http://www.mqtt.org/
* GitHub Project: http://github.com/njh/ruby-mqtt
-* API Documentation: http://rubydoc.info/gems/mqtt/frames
License
-------
@@ -57,5 +161,20 @@
-------
* Author: Nicholas J Humfrey
* Email: njh@aelius.com
* Home Page: http://www.aelius.com/njh/
+
+
+
+[MQTT]: http://www.mqtt.org/
+[Rubygems]: http://rubygems.org/
+[Bundler]: http://bundler.io/
+[MQTT URI]: https://github.com/mqtt/mqtt.github.io/wiki/URI-Scheme
+[Topic Filters]: http://docs.oasis-open.org/mqtt/mqtt/v3.1.1/mqtt-v3.1.1.html#_Toc388534397
+
+[MQTT::Client]: http://rubydoc.info/gems/mqtt/MQTT/Client#instance_attr_details
+[MQTT::Client.connect]: http://rubydoc.info/gems/mqtt/MQTT/Client.connect
+[MQTT::Client#publish]: http://rubydoc.info/gems/mqtt/MQTT/Client:publish
+[MQTT::Client#subscribe]: http://rubydoc.info/gems/mqtt/MQTT/Client:subscribe
+[MQTT::Client#get]: http://rubydoc.info/gems/mqtt/MQTT/Client:get
+