slanger 0.3.9 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of slanger might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +17 -40
- data/lib/slanger/version.rb +1 -1
- metadata +44 -45
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 718475355eadf95bb9b4005136ce10c950c11226
|
4
|
+
data.tar.gz: 0323db0e1b1fe76d985911f62f4c4a12a5b2dadb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af59b0d0f70cd6777a92d1953da00c0e06205a3a5c84c29e18f33859aa452eda38ee43bfd990a774266c355598b3ea9df7a1afc6e9a8c49e1bc5b59df11dd8f5
|
7
|
+
data.tar.gz: 1b55c415f494f76693bd62f154417c9606a5d441ed7d3425b6fc653840508e8b91db6725716c801d337f88ad2b881197129778526b238afc075f93d1ab56dc34
|
data/README.md
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
# Slanger
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
gem 'slanger'
|
7
|
-
```
|
3
|
+
[![Build Status](https://travis-ci.org/stevegraham/slanger.svg?branch=master)](https://travis-ci.org/stevegraham/slanger)
|
4
|
+
|
5
|
+
**Important! Slanger is not supposed to be included in your Gemfile. RubyGems is used as a distribution mechanism. If you include it in your app, you will likely get dependency conflicts. PRs updating dependencies for compatibility with your app will be closed. Thank you for reading and enjoy Slanger!**
|
8
6
|
|
9
|
-
|
10
|
-
--------
|
7
|
+
##Typical usage
|
11
8
|
|
12
9
|
```
|
13
10
|
gem install slanger
|
@@ -16,20 +13,6 @@ redis-server &> /dev/null &
|
|
16
13
|
slanger --app_key 765ec374ae0a69f4ce44 --secret your-pusher-secret
|
17
14
|
```
|
18
15
|
|
19
|
-
If you submit a pull request, please don't be these people:
|
20
|
-
[#109](https://github.com/stevegraham/slanger/pull/109)
|
21
|
-
[#108](https://github.com/stevegraham/slanger/pull/108)
|
22
|
-
[#83](https://github.com/stevegraham/slanger/pull/83)
|
23
|
-
[#81](https://github.com/stevegraham/slanger/pull/81)
|
24
|
-
[#72](https://github.com/stevegraham/slanger/pull/72)
|
25
|
-
[#4](https://github.com/stevegraham/slanger/pull/4)
|
26
|
-
|
27
|
-
I'll try to politely close any new ones but basically,
|
28
|
-
|
29
|
-
Slanger is intended as a server that is easy to install, not a gem inside Rails or Sinatra.
|
30
|
-
|
31
|
-
##Typical usage
|
32
|
-
|
33
16
|
Slanger is a standalone server ruby implementation of the Pusher protocol. It
|
34
17
|
is not designed to run inside a Rails or sinatra app, but it can be easily
|
35
18
|
installed as a gem.
|
@@ -56,8 +39,8 @@ Slanger is smart enough to know if a new channel subscription belongs to the
|
|
56
39
|
same user. It will not send presence messages to subscribers in this case. This
|
57
40
|
happens when the user has multiple browser tabs open for example. Using a chat
|
58
41
|
room backed by presence channels as a real example, one would not want
|
59
|
-
"Barrington" to show up N times in the presence roster because Barrington
|
60
|
-
|
42
|
+
"Barrington" to show up N times in the presence roster because Barrington
|
43
|
+
has the chat room open in N browser tabs.
|
61
44
|
|
62
45
|
Slanger was designed to be highly available and partition tolerant with
|
63
46
|
eventual consistency, which in practise is instantaneous.
|
@@ -66,7 +49,7 @@ eventual consistency, which in practise is instantaneous.
|
|
66
49
|
|
67
50
|
## Requirements
|
68
51
|
|
69
|
-
- Ruby 1.
|
52
|
+
- Ruby 2.1.2 or greater
|
70
53
|
- Redis
|
71
54
|
|
72
55
|
## Starting the service
|
@@ -75,17 +58,17 @@ Slanger is packaged as a Rubygem. Installing the gem makes the 'slanger' executa
|
|
75
58
|
|
76
59
|
__IMPORTANT:__ Redis must be running where Slanger expects it to be (either on localhost:6379 or somewhere else you told Slanger it would be using the option flag) or Slanger will fail silently. I haven't yet figured out how to get em-hiredis to treat an unreachable host as an error
|
77
60
|
|
78
|
-
|
61
|
+
```bash
|
79
62
|
$ gem install slanger
|
80
63
|
|
81
64
|
$ redis-server &> /dev/null &
|
82
65
|
|
83
66
|
$ slanger --app_key 765ec374ae0a69f4ce44 --secret your-pusher-secret
|
84
|
-
|
67
|
+
```
|
85
68
|
|
86
69
|
If all went to plan you should see the following output to STDOUT
|
87
70
|
|
88
|
-
|
71
|
+
```
|
89
72
|
|
90
73
|
.d8888b. 888
|
91
74
|
d88P Y88b 888
|
@@ -102,8 +85,7 @@ If all went to plan you should see the following output to STDOUT
|
|
102
85
|
|
103
86
|
Slanger API server listening on port 4567
|
104
87
|
Slanger WebSocket server listening on port 8080
|
105
|
-
|
106
|
-
</pre>
|
88
|
+
```
|
107
89
|
|
108
90
|
## Modifying your application code to use the Slanger service
|
109
91
|
|
@@ -112,18 +94,16 @@ Once you have a Slanger instance listening for incoming connections you need to
|
|
112
94
|
|
113
95
|
First you will need to add code to your server side component that publishes events to the Pusher HTTP REST API, usually this means telling the Pusher client to use a different host and port, e.g. consider this Ruby example
|
114
96
|
|
115
|
-
|
97
|
+
```ruby
|
116
98
|
...
|
117
99
|
|
118
100
|
Pusher.host = 'slanger.example.com'
|
119
101
|
Pusher.port = 4567
|
120
|
-
|
121
|
-
</pre>
|
102
|
+
```
|
122
103
|
|
123
104
|
You will also need to do the same to the Pusher JavaScript client in your client side JavaScript, e.g
|
124
105
|
|
125
|
-
|
126
|
-
|
106
|
+
```javascript
|
127
107
|
<script type="text/javascript">
|
128
108
|
...
|
129
109
|
|
@@ -132,7 +112,7 @@ You will also need to do the same to the Pusher JavaScript client in your client
|
|
132
112
|
Pusher.wss_port = 8080
|
133
113
|
|
134
114
|
</script>
|
135
|
-
|
115
|
+
```
|
136
116
|
|
137
117
|
Of course you could proxy all requests to `ws.example.com` to port 8080 of your Slanger node and `api.example.com` to port 4567 of your Slanger node for example, that way you would only need to set the host property of the Pusher client.
|
138
118
|
|
@@ -140,7 +120,7 @@ Of course you could proxy all requests to `ws.example.com` to port 8080 of your
|
|
140
120
|
|
141
121
|
Slanger supports several configuration options, which can be supplied as command line arguments at invocation.
|
142
122
|
|
143
|
-
|
123
|
+
```
|
144
124
|
-k or --app_key This is the Pusher app key you want to use. This is a required argument
|
145
125
|
|
146
126
|
-s or --secret This is your Pusher secret. This is a required argument
|
@@ -160,7 +140,7 @@ Slanger supports several configuration options, which can be supplied as command
|
|
160
140
|
-c or --cert_file Certificate file for SSL support. This argument is optional, if given, SSL will be enabled
|
161
141
|
|
162
142
|
-v or --[no-]verbose This makes Slanger run verbosely, meaning WebSocket frames will be echoed to STDOUT. Useful for debugging
|
163
|
-
|
143
|
+
```
|
164
144
|
|
165
145
|
|
166
146
|
# Why use Slanger instead of Pusher?
|
@@ -195,6 +175,3 @@ Pusher is an awesome service, very reasonably priced, and run by an awesome crew
|
|
195
175
|
- Claudio Poli
|
196
176
|
|
197
177
|
© 2011 a Stevie Graham joint.
|
198
|
-
|
199
|
-
|
200
|
-
|
data/lib/slanger/version.rb
CHANGED
metadata
CHANGED
@@ -1,265 +1,265 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slanger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stevie Graham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eventmachine
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.0.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 1.0.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: em-hiredis
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 0.2.0
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 0.2.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: em-websocket
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - ~>
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.5.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - ~>
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.5.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rack
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - ~>
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 1.4.5
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - ~>
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 1.4.5
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rack-fiber_pool
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - ~>
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.9.2
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - ~>
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.9.2
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: signature
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - ~>
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
89
|
version: 0.1.6
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - ~>
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: 0.1.6
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: activesupport
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - ~>
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
103
|
version: '3.1'
|
104
104
|
type: :runtime
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - ~>
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
110
|
version: '3.1'
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: glamazon
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
|
-
- - ~>
|
115
|
+
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
117
|
version: 0.3.1
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
|
-
- - ~>
|
122
|
+
- - "~>"
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.3.1
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: sinatra
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
128
128
|
requirements:
|
129
|
-
- - ~>
|
129
|
+
- - "~>"
|
130
130
|
- !ruby/object:Gem::Version
|
131
131
|
version: 1.4.4
|
132
132
|
type: :runtime
|
133
133
|
prerelease: false
|
134
134
|
version_requirements: !ruby/object:Gem::Requirement
|
135
135
|
requirements:
|
136
|
-
- - ~>
|
136
|
+
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 1.4.4
|
139
139
|
- !ruby/object:Gem::Dependency
|
140
140
|
name: thin
|
141
141
|
requirement: !ruby/object:Gem::Requirement
|
142
142
|
requirements:
|
143
|
-
- - ~>
|
143
|
+
- - "~>"
|
144
144
|
- !ruby/object:Gem::Version
|
145
145
|
version: 1.6.0
|
146
146
|
type: :runtime
|
147
147
|
prerelease: false
|
148
148
|
version_requirements: !ruby/object:Gem::Requirement
|
149
149
|
requirements:
|
150
|
-
- - ~>
|
150
|
+
- - "~>"
|
151
151
|
- !ruby/object:Gem::Version
|
152
152
|
version: 1.6.0
|
153
153
|
- !ruby/object:Gem::Dependency
|
154
154
|
name: em-http-request
|
155
155
|
requirement: !ruby/object:Gem::Requirement
|
156
156
|
requirements:
|
157
|
-
- - ~>
|
157
|
+
- - "~>"
|
158
158
|
- !ruby/object:Gem::Version
|
159
159
|
version: 0.3.0
|
160
160
|
type: :runtime
|
161
161
|
prerelease: false
|
162
162
|
version_requirements: !ruby/object:Gem::Requirement
|
163
163
|
requirements:
|
164
|
-
- - ~>
|
164
|
+
- - "~>"
|
165
165
|
- !ruby/object:Gem::Version
|
166
166
|
version: 0.3.0
|
167
167
|
- !ruby/object:Gem::Dependency
|
168
168
|
name: rspec
|
169
169
|
requirement: !ruby/object:Gem::Requirement
|
170
170
|
requirements:
|
171
|
-
- - ~>
|
171
|
+
- - "~>"
|
172
172
|
- !ruby/object:Gem::Version
|
173
173
|
version: 2.12.0
|
174
174
|
type: :development
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
|
-
- - ~>
|
178
|
+
- - "~>"
|
179
179
|
- !ruby/object:Gem::Version
|
180
180
|
version: 2.12.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: pusher
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
184
184
|
requirements:
|
185
|
-
- - ~>
|
185
|
+
- - "~>"
|
186
186
|
- !ruby/object:Gem::Version
|
187
187
|
version: 0.12.0
|
188
188
|
type: :development
|
189
189
|
prerelease: false
|
190
190
|
version_requirements: !ruby/object:Gem::Requirement
|
191
191
|
requirements:
|
192
|
-
- - ~>
|
192
|
+
- - "~>"
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: 0.12.0
|
195
195
|
- !ruby/object:Gem::Dependency
|
196
196
|
name: haml
|
197
197
|
requirement: !ruby/object:Gem::Requirement
|
198
198
|
requirements:
|
199
|
-
- - ~>
|
199
|
+
- - "~>"
|
200
200
|
- !ruby/object:Gem::Version
|
201
201
|
version: 3.1.2
|
202
202
|
type: :development
|
203
203
|
prerelease: false
|
204
204
|
version_requirements: !ruby/object:Gem::Requirement
|
205
205
|
requirements:
|
206
|
-
- - ~>
|
206
|
+
- - "~>"
|
207
207
|
- !ruby/object:Gem::Version
|
208
208
|
version: 3.1.2
|
209
209
|
- !ruby/object:Gem::Dependency
|
210
210
|
name: rake
|
211
211
|
requirement: !ruby/object:Gem::Requirement
|
212
212
|
requirements:
|
213
|
-
- -
|
213
|
+
- - ">="
|
214
214
|
- !ruby/object:Gem::Version
|
215
215
|
version: '0'
|
216
216
|
type: :development
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
|
-
- -
|
220
|
+
- - ">="
|
221
221
|
- !ruby/object:Gem::Version
|
222
222
|
version: '0'
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: timecop
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
226
226
|
requirements:
|
227
|
-
- - ~>
|
227
|
+
- - "~>"
|
228
228
|
- !ruby/object:Gem::Version
|
229
229
|
version: 0.3.5
|
230
230
|
type: :development
|
231
231
|
prerelease: false
|
232
232
|
version_requirements: !ruby/object:Gem::Requirement
|
233
233
|
requirements:
|
234
|
-
- - ~>
|
234
|
+
- - "~>"
|
235
235
|
- !ruby/object:Gem::Version
|
236
236
|
version: 0.3.5
|
237
237
|
- !ruby/object:Gem::Dependency
|
238
238
|
name: webmock
|
239
239
|
requirement: !ruby/object:Gem::Requirement
|
240
240
|
requirements:
|
241
|
-
- - ~>
|
241
|
+
- - "~>"
|
242
242
|
- !ruby/object:Gem::Version
|
243
243
|
version: 1.8.7
|
244
244
|
type: :development
|
245
245
|
prerelease: false
|
246
246
|
version_requirements: !ruby/object:Gem::Requirement
|
247
247
|
requirements:
|
248
|
-
- - ~>
|
248
|
+
- - "~>"
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: 1.8.7
|
251
251
|
- !ruby/object:Gem::Dependency
|
252
252
|
name: mocha
|
253
253
|
requirement: !ruby/object:Gem::Requirement
|
254
254
|
requirements:
|
255
|
-
- - ~>
|
255
|
+
- - "~>"
|
256
256
|
- !ruby/object:Gem::Version
|
257
257
|
version: 0.13.2
|
258
258
|
type: :development
|
259
259
|
prerelease: false
|
260
260
|
version_requirements: !ruby/object:Gem::Requirement
|
261
261
|
requirements:
|
262
|
-
- - ~>
|
262
|
+
- - "~>"
|
263
263
|
- !ruby/object:Gem::Version
|
264
264
|
version: 0.13.2
|
265
265
|
description: A websocket service compatible with Pusher libraries
|
@@ -270,6 +270,7 @@ extensions: []
|
|
270
270
|
extra_rdoc_files: []
|
271
271
|
files:
|
272
272
|
- README.md
|
273
|
+
- bin/slanger
|
273
274
|
- lib/slanger/api_server.rb
|
274
275
|
- lib/slanger/channel.rb
|
275
276
|
- lib/slanger/config.rb
|
@@ -286,29 +287,27 @@ files:
|
|
286
287
|
- lib/slanger/web_socket_server.rb
|
287
288
|
- lib/slanger/webhook.rb
|
288
289
|
- slanger.rb
|
289
|
-
- bin/slanger
|
290
290
|
homepage: http://github.com/stevegraham/slanger
|
291
291
|
licenses: []
|
292
292
|
metadata: {}
|
293
293
|
post_install_message:
|
294
294
|
rdoc_options: []
|
295
295
|
require_paths:
|
296
|
-
- .
|
296
|
+
- "."
|
297
297
|
required_ruby_version: !ruby/object:Gem::Requirement
|
298
298
|
requirements:
|
299
|
-
- -
|
299
|
+
- - ">="
|
300
300
|
- !ruby/object:Gem::Version
|
301
|
-
version: 1.
|
301
|
+
version: 2.1.2
|
302
302
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
303
303
|
requirements:
|
304
|
-
- -
|
304
|
+
- - ">="
|
305
305
|
- !ruby/object:Gem::Version
|
306
306
|
version: '0'
|
307
307
|
requirements: []
|
308
308
|
rubyforge_project:
|
309
|
-
rubygems_version: 2.
|
309
|
+
rubygems_version: 2.4.1
|
310
310
|
signing_key:
|
311
311
|
specification_version: 4
|
312
312
|
summary: A websocket service compatible with Pusher libraries
|
313
313
|
test_files: []
|
314
|
-
has_rdoc:
|