litecable 0.4.2 → 0.7.2

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 (62) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +38 -1
  3. data/LICENSE.txt +1 -1
  4. data/README.md +27 -28
  5. data/lib/lite_cable.rb +23 -2
  6. data/lib/lite_cable/anycable.rb +22 -13
  7. data/lib/lite_cable/broadcast_adapters.rb +35 -0
  8. data/lib/lite_cable/broadcast_adapters/any_cable.rb +11 -0
  9. data/lib/lite_cable/broadcast_adapters/base.rb +17 -0
  10. data/lib/lite_cable/broadcast_adapters/memory.rb +11 -0
  11. data/lib/lite_cable/channel.rb +1 -0
  12. data/lib/lite_cable/channel/base.rb +4 -2
  13. data/lib/lite_cable/channel/registry.rb +5 -0
  14. data/lib/lite_cable/channel/streams.rb +1 -2
  15. data/lib/lite_cable/coders.rb +1 -0
  16. data/lib/lite_cable/coders/json.rb +1 -0
  17. data/lib/lite_cable/coders/raw.rb +2 -1
  18. data/lib/lite_cable/config.rb +8 -6
  19. data/lib/lite_cable/connection.rb +1 -0
  20. data/lib/lite_cable/connection/authorization.rb +1 -0
  21. data/lib/lite_cable/connection/base.rb +2 -2
  22. data/lib/lite_cable/connection/identification.rb +3 -0
  23. data/lib/lite_cable/connection/streams.rb +1 -0
  24. data/lib/lite_cable/connection/subscriptions.rb +10 -5
  25. data/lib/lite_cable/internal.rb +1 -0
  26. data/lib/lite_cable/logging.rb +4 -2
  27. data/lib/lite_cable/server.rb +1 -6
  28. data/lib/lite_cable/server/client_socket.rb +1 -0
  29. data/lib/lite_cable/server/client_socket/base.rb +17 -21
  30. data/lib/lite_cable/server/client_socket/subscriptions.rb +3 -2
  31. data/lib/lite_cable/server/heart_beat.rb +4 -1
  32. data/lib/lite_cable/server/middleware.rb +7 -6
  33. data/lib/lite_cable/server/subscribers_map.rb +3 -0
  34. data/lib/lite_cable/version.rb +2 -1
  35. data/lib/litecable.rb +1 -0
  36. metadata +28 -75
  37. data/.gem_release.yml +0 -3
  38. data/.gitignore +0 -40
  39. data/.rubocop.yml +0 -63
  40. data/.travis.yml +0 -7
  41. data/Gemfile +0 -4
  42. data/Rakefile +0 -6
  43. data/bin/console +0 -14
  44. data/bin/setup +0 -8
  45. data/circle.yml +0 -8
  46. data/examples/sinatra/Gemfile +0 -16
  47. data/examples/sinatra/Procfile +0 -3
  48. data/examples/sinatra/README.md +0 -33
  49. data/examples/sinatra/anycable +0 -18
  50. data/examples/sinatra/app.rb +0 -52
  51. data/examples/sinatra/assets/app.css +0 -169
  52. data/examples/sinatra/assets/cable.js +0 -584
  53. data/examples/sinatra/assets/reset.css +0 -223
  54. data/examples/sinatra/bin/anycable-go +0 -0
  55. data/examples/sinatra/chat.rb +0 -39
  56. data/examples/sinatra/config.ru +0 -28
  57. data/examples/sinatra/views/index.slim +0 -8
  58. data/examples/sinatra/views/layout.slim +0 -15
  59. data/examples/sinatra/views/login.slim +0 -8
  60. data/examples/sinatra/views/resetcss.slim +0 -224
  61. data/examples/sinatra/views/room.slim +0 -68
  62. data/litecable.gemspec +0 -33
@@ -1,223 +0,0 @@
1
- /* Reset
2
- ----------------------------------------------------------------------------- */
3
-
4
- /* stylelint-disable */
5
-
6
- html, body,
7
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
8
- address, code, img,
9
- dl, dt, dd, ol, ul, li,
10
- fieldset, form, label,
11
- table, th, td,
12
- article, aside, nav, section, figure, figcaption, footer, header,
13
- audio, video {
14
- margin: 0;
15
- padding: 0;
16
- }
17
- blockquote, img, fieldset, form {
18
- border: 0;
19
- }
20
- a, strong, em, b, i, small, sub, sup, img, label, th, td, audio, video {
21
- vertical-align: baseline;
22
- }
23
- applet, object, iframe,
24
- abbr, acronym, big, cite,
25
- del, dfn, ins, kbd, q, s, samp,
26
- strike, tt, var, u, center, legend,
27
- caption, tbody, tfoot, thead, tr,
28
- canvas, details, embed,
29
- menu, output, ruby, summary,
30
- time, mark {
31
- margin: 0;
32
- padding: 0;
33
- border: 0;
34
- vertical-align: baseline;
35
- font: inherit;
36
- font-size: 100%;
37
- }
38
- ul, ol {
39
- list-style: none;
40
- }
41
-
42
- /* Border-box FTW
43
- https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
44
- *,
45
- *:before,
46
- *:after {
47
- box-sizing: inherit;
48
- }
49
- html {
50
- overflow-y: scroll;
51
- box-sizing: border-box;
52
- text-size-adjust: 100%;
53
- }
54
- a {
55
- background-color: transparent; /* Remove the gray background color from active links in IE 10. */
56
- -webkit-text-decoration-skip: none;
57
-
58
- &:hover,
59
- &:active {
60
- outline: 0;
61
- }
62
- }
63
- img {
64
- vertical-align: middle;
65
- }
66
- strong, b {
67
- font-weight: bold;
68
- }
69
- em, i {
70
- font-style: italic;
71
- }
72
- h1, h2, h3, h4, h5, h6 {
73
- font-weight: bold;
74
- }
75
- table {
76
- border-spacing: 0;
77
- border-collapse: collapse;
78
- }
79
- th {
80
- font-weight: bold;
81
- }
82
- td {
83
- vertical-align: top;
84
- }
85
- input,
86
- select,
87
- textarea,
88
- button {
89
- margin: 0;
90
- vertical-align: middle;
91
- font-size: 100%;
92
- font-family: inherit;
93
- }
94
-
95
- /**
96
- * 1. Add the correct box sizing in IE 10-.
97
- * 2. Remove the padding in IE 10-.
98
- */
99
- [type="checkbox"],
100
- [type="radio"] {
101
- box-sizing: border-box; /* 1 */
102
- padding: 0; /* 2 */
103
- }
104
-
105
- /**
106
- * Show the overflow in IE.
107
- * 1. Show the overflow in Edge.
108
- * 2. Show the overflow in Edge, Firefox, and IE.
109
- */
110
- button,
111
- input, /* 1 */
112
- select { /* 2 */
113
- overflow: visible;
114
- }
115
-
116
- /**
117
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
118
- * All other form control elements do not inherit `text-transform` values.
119
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
120
- * Correct `select` style inheritance in Firefox.
121
- */
122
- button,
123
- select {
124
- text-transform: none;
125
- }
126
-
127
- /**
128
- * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
129
- * controls in Android 4.
130
- * 2. Correct inability to style clickable `input` types in iOS.
131
- * 3. Improve usability and consistency of cursor style between image-type
132
- * `input` and others.
133
- */
134
- button,
135
- html [type="button"], /* 1 */
136
- [type="reset"],
137
- [type="submit"] {
138
- cursor: pointer; /* 3 */
139
- -webkit-appearance: button; /* 2 */
140
- }
141
-
142
- /**
143
- * Remove the inner border and padding in Firefox.
144
- */
145
- button::-moz-focus-inner,
146
- input::-moz-focus-inner {
147
- padding: 0;
148
- border: 0;
149
- }
150
- /**
151
- * 1. Remove the default vertical scrollbar in IE.
152
- */
153
- textarea {
154
- overflow: auto; /* 1 */
155
- resize: vertical;
156
- }
157
- svg:not(:root) {
158
- overflow: hidden; /* Correct overflow not hidden in IE. */
159
- }
160
-
161
- /**
162
- * Correct the odd appearance of search inputs in Chrome and Safari.
163
- */
164
- [type="search"] {
165
- -webkit-appearance: textfield;
166
- }
167
-
168
- /**
169
- * Remove the inner padding and cancel buttons in Chrome on OS X and
170
- * Safari on OS X.
171
- */
172
- [type="search"]::-webkit-search-cancel-button,
173
- [type="search"]::-webkit-search-decoration {
174
- -webkit-appearance: none;
175
- }
176
- /* stylelint-enable */
177
-
178
- [role="button"],
179
- input[type="submit"],
180
- input[type="reset"],
181
- input[type="button"],
182
- button {
183
- -webkit-box-sizing: content-box;
184
- -moz-box-sizing: content-box;
185
- box-sizing: content-box;
186
- }
187
-
188
- /* Reset `button` and button-style `input` default styles */
189
- input[type="submit"],
190
- input[type="reset"],
191
- input[type="button"],
192
- button {
193
- background: none;
194
- border: 0;
195
- color: inherit;
196
- /* cursor: default; */
197
- font: inherit;
198
- line-height: normal;
199
- overflow: visible;
200
- padding: 0;
201
- -webkit-appearance: button; /* for input */
202
- -webkit-user-select: none; /* for button */
203
- -moz-user-select: none;
204
- -ms-user-select: none;
205
- }
206
- input::-moz-focus-inner,
207
- button::-moz-focus-inner {
208
- border: 0;
209
- padding: 0;
210
- }
211
-
212
- /* Make `a` like a button */
213
- [role="button"] {
214
- color: inherit;
215
- cursor: default;
216
- display: inline-block;
217
- text-align: center;
218
- text-decoration: none;
219
- white-space: pre;
220
- -webkit-user-select: none;
221
- -moz-user-select: none;
222
- -ms-user-select: none;
223
- }
Binary file
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
- require "litecable"
3
-
4
- # Sample chat application
5
- module Chat
6
- class Connection < LiteCable::Connection::Base # :nodoc:
7
- identified_by :user, :sid
8
-
9
- def connect
10
- @user = cookies["user"]
11
- @sid = request.params["sid"]
12
- # reject_unauthorized_connection unless @user
13
- $stdout.puts "#{@user} connected"
14
- end
15
-
16
- def disconnect
17
- $stdout.puts "#{@user} disconnected"
18
- end
19
- end
20
-
21
- class Channel < LiteCable::Channel::Base # :nodoc:
22
- identifier :chat
23
-
24
- def subscribed
25
- reject unless chat_id
26
- stream_from "chat_#{chat_id}"
27
- end
28
-
29
- def speak(data)
30
- LiteCable.broadcast "chat_#{chat_id}", user: user, message: data["message"], sid: sid
31
- end
32
-
33
- private
34
-
35
- def chat_id
36
- params.fetch("id")
37
- end
38
- end
39
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
- lib = File.expand_path("../../../lib", __FILE__)
3
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
-
5
- require './app'
6
- require './chat'
7
-
8
- LiteCable.config.log_level = Logger::DEBUG
9
-
10
- app = Rack::Builder.new do
11
- map '/' do
12
- run App
13
- end
14
- end
15
-
16
- if ENV['ANYCABLE']
17
- # Turn AnyCable compatibility mode
18
- LiteCable.anycable!
19
- else
20
- require "lite_cable/server"
21
-
22
- app.map '/cable' do
23
- use LiteCable::Server::Middleware, connection_class: Chat::Connection
24
- run proc { |_| [200, { 'Content-Type' => 'text/plain' }, ['OK']] }
25
- end
26
- end
27
-
28
- run app
@@ -1,8 +0,0 @@
1
- h2 Room Id
2
-
3
- form action="/rooms" method="POST"
4
- .row
5
- input type="text" required="required" name="id"
6
- .row
7
- button.btn type="submit"
8
- span Go!
@@ -1,15 +0,0 @@
1
- doctype html
2
- html
3
- head
4
- title LiteCable Sinatra Demo
5
- meta name="viewport" content="width=device-width"
6
- meta charset="UTF-8"
7
- link rel="stylesheet" href="/reset.css"
8
- link rel="stylesheet" href="/app.css"
9
- script type="text/javascript" src="/cable.js"
10
- body
11
- .header
12
- h1.title
13
- a href='/' LiteCable
14
- .container.main
15
- == yield
@@ -1,8 +0,0 @@
1
- h2 Your Name
2
-
3
- form action="/sign_in" method="POST"
4
- .row
5
- input type="text" required="required" name="user"
6
- .row
7
- button.btn type="submit"
8
- span Go!
@@ -1,224 +0,0 @@
1
- css:
2
- /* Reset
3
- ----------------------------------------------------------------------------- */
4
-
5
- /* stylelint-disable */
6
-
7
- html, body,
8
- h1, h2, h3, h4, h5, h6, p, blockquote, pre,
9
- address, code, img,
10
- dl, dt, dd, ol, ul, li,
11
- fieldset, form, label,
12
- table, th, td,
13
- article, aside, nav, section, figure, figcaption, footer, header,
14
- audio, video {
15
- margin: 0;
16
- padding: 0;
17
- }
18
- blockquote, img, fieldset, form {
19
- border: 0;
20
- }
21
- a, strong, em, b, i, small, sub, sup, img, label, th, td, audio, video {
22
- vertical-align: baseline;
23
- }
24
- applet, object, iframe,
25
- abbr, acronym, big, cite,
26
- del, dfn, ins, kbd, q, s, samp,
27
- strike, tt, var, u, center, legend,
28
- caption, tbody, tfoot, thead, tr,
29
- canvas, details, embed,
30
- menu, output, ruby, summary,
31
- time, mark {
32
- margin: 0;
33
- padding: 0;
34
- border: 0;
35
- vertical-align: baseline;
36
- font: inherit;
37
- font-size: 100%;
38
- }
39
- ul, ol {
40
- list-style: none;
41
- }
42
-
43
- /* Border-box FTW
44
- https://css-tricks.com/inheriting-box-sizing-probably-slightly-better-best-practice/ */
45
- *,
46
- *:before,
47
- *:after {
48
- box-sizing: inherit;
49
- }
50
- html {
51
- overflow-y: scroll;
52
- box-sizing: border-box;
53
- text-size-adjust: 100%;
54
- }
55
- a {
56
- background-color: transparent; /* Remove the gray background color from active links in IE 10. */
57
- -webkit-text-decoration-skip: none;
58
-
59
- &:hover,
60
- &:active {
61
- outline: 0;
62
- }
63
- }
64
- img {
65
- vertical-align: middle;
66
- }
67
- strong, b {
68
- font-weight: bold;
69
- }
70
- em, i {
71
- font-style: italic;
72
- }
73
- h1, h2, h3, h4, h5, h6 {
74
- font-weight: bold;
75
- }
76
- table {
77
- border-spacing: 0;
78
- border-collapse: collapse;
79
- }
80
- th {
81
- font-weight: bold;
82
- }
83
- td {
84
- vertical-align: top;
85
- }
86
- input,
87
- select,
88
- textarea,
89
- button {
90
- margin: 0;
91
- vertical-align: middle;
92
- font-size: 100%;
93
- font-family: inherit;
94
- }
95
-
96
- /**
97
- * 1. Add the correct box sizing in IE 10-.
98
- * 2. Remove the padding in IE 10-.
99
- */
100
- [type="checkbox"],
101
- [type="radio"] {
102
- box-sizing: border-box; /* 1 */
103
- padding: 0; /* 2 */
104
- }
105
-
106
- /**
107
- * Show the overflow in IE.
108
- * 1. Show the overflow in Edge.
109
- * 2. Show the overflow in Edge, Firefox, and IE.
110
- */
111
- button,
112
- input, /* 1 */
113
- select { /* 2 */
114
- overflow: visible;
115
- }
116
-
117
- /**
118
- * Address inconsistent `text-transform` inheritance for `button` and `select`.
119
- * All other form control elements do not inherit `text-transform` values.
120
- * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
121
- * Correct `select` style inheritance in Firefox.
122
- */
123
- button,
124
- select {
125
- text-transform: none;
126
- }
127
-
128
- /**
129
- * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
130
- * controls in Android 4.
131
- * 2. Correct inability to style clickable `input` types in iOS.
132
- * 3. Improve usability and consistency of cursor style between image-type
133
- * `input` and others.
134
- */
135
- button,
136
- html [type="button"], /* 1 */
137
- [type="reset"],
138
- [type="submit"] {
139
- cursor: pointer; /* 3 */
140
- -webkit-appearance: button; /* 2 */
141
- }
142
-
143
- /**
144
- * Remove the inner border and padding in Firefox.
145
- */
146
- button::-moz-focus-inner,
147
- input::-moz-focus-inner {
148
- padding: 0;
149
- border: 0;
150
- }
151
- /**
152
- * 1. Remove the default vertical scrollbar in IE.
153
- */
154
- textarea {
155
- overflow: auto; /* 1 */
156
- resize: vertical;
157
- }
158
- svg:not(:root) {
159
- overflow: hidden; /* Correct overflow not hidden in IE. */
160
- }
161
-
162
- /**
163
- * Correct the odd appearance of search inputs in Chrome and Safari.
164
- */
165
- [type="search"] {
166
- -webkit-appearance: textfield;
167
- }
168
-
169
- /**
170
- * Remove the inner padding and cancel buttons in Chrome on OS X and
171
- * Safari on OS X.
172
- */
173
- [type="search"]::-webkit-search-cancel-button,
174
- [type="search"]::-webkit-search-decoration {
175
- -webkit-appearance: none;
176
- }
177
- /* stylelint-enable */
178
-
179
- [role="button"],
180
- input[type="submit"],
181
- input[type="reset"],
182
- input[type="button"],
183
- button {
184
- -webkit-box-sizing: content-box;
185
- -moz-box-sizing: content-box;
186
- box-sizing: content-box;
187
- }
188
-
189
- /* Reset `button` and button-style `input` default styles */
190
- input[type="submit"],
191
- input[type="reset"],
192
- input[type="button"],
193
- button {
194
- background: none;
195
- border: 0;
196
- color: inherit;
197
- /* cursor: default; */
198
- font: inherit;
199
- line-height: normal;
200
- overflow: visible;
201
- padding: 0;
202
- -webkit-appearance: button; /* for input */
203
- -webkit-user-select: none; /* for button */
204
- -moz-user-select: none;
205
- -ms-user-select: none;
206
- }
207
- input::-moz-focus-inner,
208
- button::-moz-focus-inner {
209
- border: 0;
210
- padding: 0;
211
- }
212
-
213
- /* Make `a` like a button */
214
- [role="button"] {
215
- color: inherit;
216
- cursor: default;
217
- display: inline-block;
218
- text-align: center;
219
- text-decoration: none;
220
- white-space: pre;
221
- -webkit-user-select: none;
222
- -moz-user-select: none;
223
- -ms-user-select: none;
224
- }