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.
Files changed (43) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +15 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +4 -0
  5. data/CODE_OF_CONDUCT.md +49 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE +210 -0
  8. data/README.md +323 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/lib/mqtt-rails.rb +144 -0
  13. data/lib/mqtt_rails/client.rb +414 -0
  14. data/lib/mqtt_rails/connection_helper.rb +172 -0
  15. data/lib/mqtt_rails/exception.rb +52 -0
  16. data/lib/mqtt_rails/handler.rb +274 -0
  17. data/lib/mqtt_rails/packet.rb +33 -0
  18. data/lib/mqtt_rails/packet/base.rb +315 -0
  19. data/lib/mqtt_rails/packet/connack.rb +102 -0
  20. data/lib/mqtt_rails/packet/connect.rb +183 -0
  21. data/lib/mqtt_rails/packet/disconnect.rb +38 -0
  22. data/lib/mqtt_rails/packet/pingreq.rb +29 -0
  23. data/lib/mqtt_rails/packet/pingresp.rb +38 -0
  24. data/lib/mqtt_rails/packet/puback.rb +44 -0
  25. data/lib/mqtt_rails/packet/pubcomp.rb +44 -0
  26. data/lib/mqtt_rails/packet/publish.rb +148 -0
  27. data/lib/mqtt_rails/packet/pubrec.rb +44 -0
  28. data/lib/mqtt_rails/packet/pubrel.rb +62 -0
  29. data/lib/mqtt_rails/packet/suback.rb +75 -0
  30. data/lib/mqtt_rails/packet/subscribe.rb +124 -0
  31. data/lib/mqtt_rails/packet/unsuback.rb +49 -0
  32. data/lib/mqtt_rails/packet/unsubscribe.rb +84 -0
  33. data/lib/mqtt_rails/publisher.rb +181 -0
  34. data/lib/mqtt_rails/sender.rb +129 -0
  35. data/lib/mqtt_rails/ssl_helper.rb +61 -0
  36. data/lib/mqtt_rails/subscriber.rb +166 -0
  37. data/lib/mqtt_rails/version.rb +3 -0
  38. data/mqtt-rails.gemspec +33 -0
  39. data/samples/client_blocking(reading).rb +29 -0
  40. data/samples/client_blocking(writing).rb +18 -0
  41. data/samples/getting_started.rb +49 -0
  42. data/samples/test_client.rb +69 -0
  43. 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: []