mqtt-rails 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +15 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +49 -0
- data/Gemfile +4 -0
- data/LICENSE +210 -0
- data/README.md +323 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/lib/mqtt-rails.rb +144 -0
- data/lib/mqtt_rails/client.rb +414 -0
- data/lib/mqtt_rails/connection_helper.rb +172 -0
- data/lib/mqtt_rails/exception.rb +52 -0
- data/lib/mqtt_rails/handler.rb +274 -0
- data/lib/mqtt_rails/packet.rb +33 -0
- data/lib/mqtt_rails/packet/base.rb +315 -0
- data/lib/mqtt_rails/packet/connack.rb +102 -0
- data/lib/mqtt_rails/packet/connect.rb +183 -0
- data/lib/mqtt_rails/packet/disconnect.rb +38 -0
- data/lib/mqtt_rails/packet/pingreq.rb +29 -0
- data/lib/mqtt_rails/packet/pingresp.rb +38 -0
- data/lib/mqtt_rails/packet/puback.rb +44 -0
- data/lib/mqtt_rails/packet/pubcomp.rb +44 -0
- data/lib/mqtt_rails/packet/publish.rb +148 -0
- data/lib/mqtt_rails/packet/pubrec.rb +44 -0
- data/lib/mqtt_rails/packet/pubrel.rb +62 -0
- data/lib/mqtt_rails/packet/suback.rb +75 -0
- data/lib/mqtt_rails/packet/subscribe.rb +124 -0
- data/lib/mqtt_rails/packet/unsuback.rb +49 -0
- data/lib/mqtt_rails/packet/unsubscribe.rb +84 -0
- data/lib/mqtt_rails/publisher.rb +181 -0
- data/lib/mqtt_rails/sender.rb +129 -0
- data/lib/mqtt_rails/ssl_helper.rb +61 -0
- data/lib/mqtt_rails/subscriber.rb +166 -0
- data/lib/mqtt_rails/version.rb +3 -0
- data/mqtt-rails.gemspec +33 -0
- data/samples/client_blocking(reading).rb +29 -0
- data/samples/client_blocking(writing).rb +18 -0
- data/samples/getting_started.rb +49 -0
- data/samples/test_client.rb +69 -0
- metadata +126 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'mqtt-rails'
|
2
|
+
|
3
|
+
### Create a simple client with default attributes
|
4
|
+
client = MqttRails::Client.new
|
5
|
+
Rails.logger = 'mqtt_rails'
|
6
|
+
### Register a callback on message event to display messages
|
7
|
+
message_counter = 0
|
8
|
+
client.on_message do |message|
|
9
|
+
puts "Message recieved on topic: #{message.topic}\n>>> #{message.payload}"
|
10
|
+
message_counter += 1
|
11
|
+
end
|
12
|
+
|
13
|
+
### Register a callback on suback to assert the subcription
|
14
|
+
waiting_suback = true
|
15
|
+
client.on_suback do
|
16
|
+
waiting_suback = false
|
17
|
+
puts "Subscribed"
|
18
|
+
end
|
19
|
+
|
20
|
+
### Register a callback for puback event when receiving a puback
|
21
|
+
waiting_puback = true
|
22
|
+
client.on_puback do
|
23
|
+
waiting_puback = false
|
24
|
+
puts "Message Acknowledged"
|
25
|
+
end
|
26
|
+
|
27
|
+
### Connect to the eclipse test server on port 1883 (Unencrypted mode)
|
28
|
+
client.connect('iot.eclipse.org', 1883)
|
29
|
+
|
30
|
+
### Subscribe to a topic
|
31
|
+
client.subscribe(['/paho/ruby/test', 2])
|
32
|
+
|
33
|
+
### Waiting for the suback answer and excute the previously set on_suback callback
|
34
|
+
while waiting_suback do
|
35
|
+
sleep 0.001
|
36
|
+
end
|
37
|
+
|
38
|
+
### Publlish a message on the topic "/paho/ruby/test" with "retain == false" and "qos == 1"
|
39
|
+
client.publish("/paho/ruby/test", "Hello there!", false, 1)
|
40
|
+
|
41
|
+
while waiting_puback do
|
42
|
+
sleep 0.001
|
43
|
+
end
|
44
|
+
|
45
|
+
### Waiting to assert that the message is displayed by on_message callback
|
46
|
+
sleep 1
|
47
|
+
|
48
|
+
### Calling an explicit disconnect
|
49
|
+
client.disconnect
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require "mqtt-rails"
|
2
|
+
|
3
|
+
cli = MqttRails::Client.new({persistent: true, keep_alive: 7})
|
4
|
+
Rails.logger = 'paho_log'
|
5
|
+
|
6
|
+
cli.connect('localhost', 1883)
|
7
|
+
|
8
|
+
#########################################################
|
9
|
+
### Callback settings
|
10
|
+
waiting = true
|
11
|
+
cli.on_suback { waiting = false}
|
12
|
+
|
13
|
+
cli.on_message = lambda { |p| puts ">>>>> This is a LAMBDA callback for message event <<<<<\nTopic: #{p.topic}\nPayload: #{p.payload}\nQoS: #{p.qos}" }
|
14
|
+
|
15
|
+
foo_foo = lambda { |p| puts ">>>>> I am LAMBDA callback for the /foo/foo topic <<<<<" }
|
16
|
+
foo_bar = proc { puts ">>>>> I am PROC callback for the /foo/bar topic <<<<<" }
|
17
|
+
|
18
|
+
|
19
|
+
cli.add_topic_callback('/foo/tutu') do
|
20
|
+
puts ">>>>> I am BLOCK callback for the /foo/tutu topic <<<<<"
|
21
|
+
end
|
22
|
+
cli.add_topic_callback('/foo/bar', foo_bar)
|
23
|
+
cli.add_topic_callback('/foo/foo', foo_foo)
|
24
|
+
|
25
|
+
#########################################################
|
26
|
+
|
27
|
+
cli.subscribe(['/foo/foo', 0], ['/foo/bar', 1], ['/foo/tutu', 2], ["/foo", 0])
|
28
|
+
|
29
|
+
while waiting do
|
30
|
+
sleep 0.0001
|
31
|
+
end
|
32
|
+
|
33
|
+
cli.publish("/foo/tutu", "It's me!", false, 2)
|
34
|
+
cli.publish("/foo/tutu", "It's you!", false, 1)
|
35
|
+
cli.publish("/foo/tutu", "It's them!", false, 0)
|
36
|
+
|
37
|
+
cli.publish("/foo/bar", "It's me!", false, 2)
|
38
|
+
cli.publish("/foo/bar", "It's you!", false, 1)
|
39
|
+
cli.publish("/foo/bar", "It's them!", false, 0)
|
40
|
+
|
41
|
+
cli.publish("/foo/foo", "It's me!", false, 2)
|
42
|
+
cli.publish("/foo/foo", "It's you!", false, 1)
|
43
|
+
cli.publish("/foo/foo", "It's them!", false, 0)
|
44
|
+
|
45
|
+
sleep cli.ack_timeout
|
46
|
+
|
47
|
+
cli.on_message = nil
|
48
|
+
foo_tutu = lambda { |p| puts ">>>>> Changing callback type to LAMBDA for the /foo/tutu topic <<<<<" }
|
49
|
+
cli.add_topic_callback('/foo/tutu', foo_tutu)
|
50
|
+
cli.add_topic_callback('/foo/bar') do
|
51
|
+
puts ">>>>> Changing callback type to BLOCK for the /foo/bar topic <<<<<"
|
52
|
+
end
|
53
|
+
|
54
|
+
cli.publish("/foo/tutu", "It's me!", false, 2)
|
55
|
+
cli.publish("/foo/tutu", "It's you!", false, 1)
|
56
|
+
cli.publish("/foo/tutu", "It's them!", false, 0)
|
57
|
+
|
58
|
+
cli.publish("/foo/bar", "It's me!", false, 2)
|
59
|
+
cli.publish("/foo/bar", "It's you!", false, 1)
|
60
|
+
cli.publish("/foo/bar", "It's them!", false, 0)
|
61
|
+
|
62
|
+
sleep cli.ack_timeout
|
63
|
+
|
64
|
+
cli.unsubscribe("+/tutu", "+/+")
|
65
|
+
|
66
|
+
puts "Waiting 10 sec for keeping alive..."
|
67
|
+
sleep 10
|
68
|
+
|
69
|
+
cli.disconnect
|
metadata
ADDED
@@ -0,0 +1,126 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mqtt-rails
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: '1.0'
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Nicolas KOVACS
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-01-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.11'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description: A simple rails mqtt client gem
|
56
|
+
email:
|
57
|
+
- pro.nkovacs@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- ".gitignore"
|
63
|
+
- ".rspec"
|
64
|
+
- ".travis.yml"
|
65
|
+
- CODE_OF_CONDUCT.md
|
66
|
+
- Gemfile
|
67
|
+
- LICENSE
|
68
|
+
- README.md
|
69
|
+
- Rakefile
|
70
|
+
- bin/console
|
71
|
+
- bin/setup
|
72
|
+
- lib/mqtt-rails.rb
|
73
|
+
- lib/mqtt_rails/client.rb
|
74
|
+
- lib/mqtt_rails/connection_helper.rb
|
75
|
+
- lib/mqtt_rails/exception.rb
|
76
|
+
- lib/mqtt_rails/handler.rb
|
77
|
+
- lib/mqtt_rails/packet.rb
|
78
|
+
- lib/mqtt_rails/packet/base.rb
|
79
|
+
- lib/mqtt_rails/packet/connack.rb
|
80
|
+
- lib/mqtt_rails/packet/connect.rb
|
81
|
+
- lib/mqtt_rails/packet/disconnect.rb
|
82
|
+
- lib/mqtt_rails/packet/pingreq.rb
|
83
|
+
- lib/mqtt_rails/packet/pingresp.rb
|
84
|
+
- lib/mqtt_rails/packet/puback.rb
|
85
|
+
- lib/mqtt_rails/packet/pubcomp.rb
|
86
|
+
- lib/mqtt_rails/packet/publish.rb
|
87
|
+
- lib/mqtt_rails/packet/pubrec.rb
|
88
|
+
- lib/mqtt_rails/packet/pubrel.rb
|
89
|
+
- lib/mqtt_rails/packet/suback.rb
|
90
|
+
- lib/mqtt_rails/packet/subscribe.rb
|
91
|
+
- lib/mqtt_rails/packet/unsuback.rb
|
92
|
+
- lib/mqtt_rails/packet/unsubscribe.rb
|
93
|
+
- lib/mqtt_rails/publisher.rb
|
94
|
+
- lib/mqtt_rails/sender.rb
|
95
|
+
- lib/mqtt_rails/ssl_helper.rb
|
96
|
+
- lib/mqtt_rails/subscriber.rb
|
97
|
+
- lib/mqtt_rails/version.rb
|
98
|
+
- mqtt-rails.gemspec
|
99
|
+
- samples/client_blocking(reading).rb
|
100
|
+
- samples/client_blocking(writing).rb
|
101
|
+
- samples/getting_started.rb
|
102
|
+
- samples/test_client.rb
|
103
|
+
homepage: https://github.com/nicovak/mqtt.rails.git
|
104
|
+
licenses:
|
105
|
+
- EPL-1.0
|
106
|
+
metadata: {}
|
107
|
+
post_install_message:
|
108
|
+
rdoc_options: []
|
109
|
+
require_paths:
|
110
|
+
- lib
|
111
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
version: '0'
|
116
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - ">="
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: '0'
|
121
|
+
requirements: []
|
122
|
+
rubygems_version: 3.0.3
|
123
|
+
signing_key:
|
124
|
+
specification_version: 4
|
125
|
+
summary: A simple rails mqtt client gem
|
126
|
+
test_files: []
|