tubesock 0.1.3 → 0.2.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/Gemfile +0 -2
- data/README.md +3 -8
- data/lib/tubesock.rb +2 -2
- data/lib/tubesock/version.rb +1 -1
- data/test/test_helper.rb +3 -3
- data/test/tubesock_test.rb +3 -3
- data/tubesock.gemspec +2 -2
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 641bbc3cadfe10190a32eba8504b498fd2bbd080
|
4
|
+
data.tar.gz: 715eb149abbe8e475ce89ef8556d4e05586231a7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a20f7fbb5814018a5faa5b882e80d3701db747ca8b7808933a1cb707a7df2095ddf788067196ddd98ab202607b37dd2fd3c71802e11c022b8be0913b2552381d
|
7
|
+
data.tar.gz: 37db65ca33059d3af8b9a2c5d06cf44e2cc7ffbc8abdb5c8dae76feebe3928bb87ab17fc28ee0512cec591e618104f362fee065d9cc082e6a33cc8466ea2d281
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
Tubesock lets you use websockets from rack and rails 4+ by using Rack's new hijack interface to access the underlying socket connection.
|
6
6
|
|
7
|
-
In contrast to other websocket libraries, Tubesock does not use a reactor (read: no eventmachine). Instead, it leverages Rails 4's new full-stack concurrency support. Note that this means you must use a concurrent server. We recommend Puma.
|
7
|
+
In contrast to other websocket libraries, Tubesock does not use a reactor (read: no eventmachine). Instead, it leverages Rails 4's new full-stack concurrency support. Note that this means you must use a concurrent server. We recommend Puma > 2.0.0.
|
8
8
|
|
9
9
|
## Installation
|
10
10
|
|
@@ -12,9 +12,6 @@ Add this line to your application's Gemfile:
|
|
12
12
|
|
13
13
|
```ruby
|
14
14
|
gem 'tubesock'
|
15
|
-
# currently, the ability to setup a websocket from rack is only
|
16
|
-
# available on my fork. If/when the PR is merged this will become a gem dependency
|
17
|
-
gem 'websocket', github: "ngauthier/websocket-ruby"
|
18
15
|
```
|
19
16
|
|
20
17
|
And then execute:
|
@@ -59,19 +56,17 @@ class ChatController < ApplicationController
|
|
59
56
|
def chat
|
60
57
|
hijack do |tubesock|
|
61
58
|
tubesock.onopen do
|
62
|
-
tubesock.send_data
|
59
|
+
tubesock.send_data "Hello, friend"
|
63
60
|
end
|
64
61
|
|
65
62
|
tubesock.onmessage do |data|
|
66
|
-
tubesock.send_data
|
63
|
+
tubesock.send_data "You said: #{data}"
|
67
64
|
end
|
68
65
|
end
|
69
66
|
end
|
70
67
|
end
|
71
68
|
```
|
72
69
|
|
73
|
-
For a full example, check out [Tubesock Example](http://github.com/ngauthier/tubesock-example).
|
74
|
-
|
75
70
|
## Contributing
|
76
71
|
|
77
72
|
1. Fork it
|
data/lib/tubesock.rb
CHANGED
@@ -36,7 +36,7 @@ class Tubesock
|
|
36
36
|
def send_data data, type = :text
|
37
37
|
frame = WebSocket::Frame::Outgoing::Server.new(
|
38
38
|
version: @version,
|
39
|
-
data:
|
39
|
+
data: data,
|
40
40
|
type: type
|
41
41
|
)
|
42
42
|
@socket.write frame.to_s
|
@@ -61,7 +61,7 @@ class Tubesock
|
|
61
61
|
Thread.current.abort_on_exception = true
|
62
62
|
@open_handlers.each(&:call)
|
63
63
|
each_frame do |data|
|
64
|
-
@message_handlers.each{|h| h.call(
|
64
|
+
@message_handlers.each{|h| h.call(data) }
|
65
65
|
end
|
66
66
|
@close_handlers.each(&:call)
|
67
67
|
@socket.close
|
data/lib/tubesock/version.rb
CHANGED
data/test/test_helper.rb
CHANGED
@@ -42,10 +42,10 @@ class Tubesock::TestCase::TestInteraction
|
|
42
42
|
@client_socket << message
|
43
43
|
end
|
44
44
|
|
45
|
-
def write(
|
45
|
+
def write(data)
|
46
46
|
write_raw WebSocket::Frame::Outgoing::Client.new(
|
47
47
|
version: version,
|
48
|
-
data:
|
48
|
+
data: data,
|
49
49
|
type: :text
|
50
50
|
).to_s
|
51
51
|
end
|
@@ -54,7 +54,7 @@ class Tubesock::TestCase::TestInteraction
|
|
54
54
|
framebuffer = WebSocket::Frame::Incoming::Client.new(version: version)
|
55
55
|
data, addrinfo = @client_socket.recvfrom(2000)
|
56
56
|
framebuffer << data
|
57
|
-
|
57
|
+
framebuffer.next.data
|
58
58
|
end
|
59
59
|
|
60
60
|
def join
|
data/test/tubesock_test.rb
CHANGED
@@ -25,13 +25,13 @@ class TubesockTest < Tubesock::TestCase
|
|
25
25
|
tubesock.onclose &closed
|
26
26
|
|
27
27
|
tubesock.onmessage do |message|
|
28
|
-
tubesock.send_data
|
28
|
+
tubesock.send_data "Hello #{message}"
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
32
|
-
interaction.write
|
32
|
+
interaction.write "Nick"
|
33
33
|
data = interaction.read
|
34
|
-
data
|
34
|
+
data.must_equal "Hello Nick"
|
35
35
|
interaction.close
|
36
36
|
|
37
37
|
opened.called.must_equal true
|
data/tubesock.gemspec
CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
|
-
spec.add_dependency "rack", "
|
22
|
-
spec.add_dependency "websocket"
|
21
|
+
spec.add_dependency "rack", ">= 1.5.0"
|
22
|
+
spec.add_dependency "websocket", ">= 1.1.0"
|
23
23
|
|
24
24
|
spec.add_development_dependency "bundler", "~> 1.3"
|
25
25
|
spec.add_development_dependency "rake"
|
metadata
CHANGED
@@ -1,27 +1,27 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tubesock
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nick Gauthier
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rack
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - '
|
17
|
+
- - '>='
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 1.5.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.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - '>='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.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
|
-
version:
|
40
|
+
version: 1.1.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -147,7 +147,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
149
|
rubyforge_project:
|
150
|
-
rubygems_version: 2.0.
|
150
|
+
rubygems_version: 2.0.2
|
151
151
|
signing_key:
|
152
152
|
specification_version: 4
|
153
153
|
summary: Handle websocket connections via Rack and Rails 4 using concurrency
|