action_cable_client 1.2.4 → 1.3.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 +4 -4
- data/CHANGELOG.md +6 -1
- data/README.md +1 -0
- data/lib/action_cable_client.rb +30 -7
- data/lib/action_cable_client/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9df9f344f461e4863351dd7c78b1174923e9686c
|
4
|
+
data.tar.gz: 9e0ee80e83d868a1b86b16bf7ab23edc108ba6ca
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 803df93ecb11cb0cee7125b90bfe77ca16b44792b4b6fdebf857929208a106d57a7acfb1afccf8cd3ccc3c87d9cd3cfec094c7d22429ffdd91710be0f9117332
|
7
|
+
data.tar.gz: a1ed9a6dfc18d3845190c395aab13812300a868891a65024be39238485d5823cfd1c511522a337ff80f4131d43808394c8379fc202ed77a1fff7ab13f49f12cb
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,10 @@
|
|
1
|
+
## 1.2.6
|
2
|
+
* subscribed now is a callback instead of a boolean
|
3
|
+
* subscribed? tells whether or not the client is subscribed to the channel
|
4
|
+
* added subscribed callback which signifies when the client can start sending messages on the channel
|
5
|
+
|
1
6
|
## 1.2.4
|
2
|
-
* Support Ruby 2.2.2
|
7
|
+
* [#3](https://github.com/NullVoxPopuli/action_cable_client/pull/3) Support Ruby 2.2.2 (@NullVoxPopuli)
|
3
8
|
|
4
9
|
## 1.2.3
|
5
10
|
* The ping message received from the action cable server changed from being identity: _ping to type: ping
|
data/README.md
CHANGED
data/lib/action_cable_client.rb
CHANGED
@@ -21,13 +21,10 @@ class ActionCableClient
|
|
21
21
|
attr_reader :_message_factory
|
22
22
|
# The queue should store entries in the format:
|
23
23
|
# [ action, data ]
|
24
|
-
attr_accessor :message_queue, :
|
25
|
-
|
26
|
-
alias subscribed? subscribed
|
24
|
+
attr_accessor :message_queue, :_subscribed, :_subscribed_callaback
|
27
25
|
|
28
26
|
def_delegator :_websocket_client, :disconnect, :disconnected
|
29
27
|
def_delegator :_websocket_client, :errback, :errored
|
30
|
-
def_delegator :_websocket_client, :connection_completed, :connected?
|
31
28
|
def_delegator :_websocket_client, :send_msg, :send_msg
|
32
29
|
|
33
30
|
# @param [String] uri - e.g.: ws://domain:port
|
@@ -40,7 +37,7 @@ class ActionCableClient
|
|
40
37
|
@_uri = uri
|
41
38
|
@_queued_send = queued_send
|
42
39
|
@message_queue = []
|
43
|
-
@
|
40
|
+
@_subscribed = false
|
44
41
|
|
45
42
|
@_message_factory = MessageFactory.new(channel)
|
46
43
|
# NOTE:
|
@@ -95,6 +92,28 @@ class ActionCableClient
|
|
95
92
|
end
|
96
93
|
end
|
97
94
|
|
95
|
+
# callback when the client receives a confirm_subscription message
|
96
|
+
# from the action_cable server.
|
97
|
+
# This is only called once, and signifies that you can now send
|
98
|
+
# messages on the channel
|
99
|
+
#
|
100
|
+
# @param [Proc] block - code to run after subscribing to the channel is confirmed
|
101
|
+
#
|
102
|
+
# @example
|
103
|
+
# client = ActionCableClient.new(uri, 'RoomChannel')
|
104
|
+
# client.connected {}
|
105
|
+
# client.subscribed do
|
106
|
+
# # do things after successful subscription confirmation
|
107
|
+
# end
|
108
|
+
def subscribed(&block)
|
109
|
+
self._subscribed_callaback = block
|
110
|
+
end
|
111
|
+
|
112
|
+
# @return [Boolean] is the client subscribed to the channel?
|
113
|
+
def subscribed?
|
114
|
+
_subscribed
|
115
|
+
end
|
116
|
+
|
98
117
|
private
|
99
118
|
|
100
119
|
# @param [WebSocket::Frame::Incoming::Client] message - the websockt message object
|
@@ -147,7 +166,10 @@ class ActionCableClient
|
|
147
166
|
# {"identifier" => "_ping","type" => "confirm_subscription"}
|
148
167
|
def check_for_subscribe_confirmation(message)
|
149
168
|
message_type = message[Message::TYPE_KEY]
|
150
|
-
|
169
|
+
if Message::TYPE_CONFIRM_SUBSCRIPTION == message_type
|
170
|
+
self._subscribed = true
|
171
|
+
_subscribed_callaback.call if _subscribed_callaback
|
172
|
+
end
|
151
173
|
end
|
152
174
|
|
153
175
|
# {"identifier" => "_ping","message" => 1460201942}
|
@@ -177,7 +199,8 @@ class ActionCableClient
|
|
177
199
|
# can't send messages if we aren't subscribed
|
178
200
|
if subscribed?
|
179
201
|
msg = _message_factory.create(Commands::MESSAGE, action, data)
|
180
|
-
|
202
|
+
json = msg.to_json
|
203
|
+
send_msg(json)
|
181
204
|
end
|
182
205
|
end
|
183
206
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: action_cable_client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- L. Preston Sego III
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -129,6 +129,6 @@ rubyforge_project:
|
|
129
129
|
rubygems_version: 2.5.1
|
130
130
|
signing_key:
|
131
131
|
specification_version: 4
|
132
|
-
summary: ActionCableClient-1.
|
132
|
+
summary: ActionCableClient-1.3.0
|
133
133
|
test_files: []
|
134
134
|
has_rdoc:
|