faye 0.6.8 → 0.7.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.
Potentially problematic release.
This version of faye might be problematic. Click here for more details.
- data/History.txt +10 -3
- data/README.rdoc +1 -2
- data/lib/faye-browser-min.js +1 -1
- data/lib/faye.rb +89 -32
- data/lib/faye/adapters/rack_adapter.rb +20 -26
- data/lib/faye/engines/base.rb +5 -0
- data/lib/faye/engines/memory.rb +9 -3
- data/lib/faye/engines/redis.rb +26 -11
- data/lib/faye/mixins/publisher.rb +4 -8
- data/lib/faye/protocol/channel.rb +8 -8
- data/lib/faye/protocol/client.rb +45 -4
- data/lib/faye/protocol/publication.rb +5 -0
- data/lib/faye/protocol/server.rb +10 -19
- data/lib/faye/thin_extensions.rb +1 -1
- data/lib/faye/transport/http.rb +17 -8
- data/lib/faye/transport/local.rb +6 -3
- data/lib/faye/transport/transport.rb +23 -9
- data/lib/faye/transport/web_socket.rb +102 -0
- data/lib/faye/util/web_socket.rb +34 -80
- data/lib/faye/util/web_socket/api.rb +103 -0
- data/lib/faye/util/web_socket/client.rb +82 -0
- data/lib/faye/util/web_socket/draft75_parser.rb +3 -5
- data/lib/faye/util/web_socket/draft76_parser.rb +5 -7
- data/lib/faye/util/web_socket/protocol8_parser.rb +111 -46
- data/spec/javascript/client_spec.js +99 -7
- data/spec/javascript/engine_spec.js +116 -3
- data/spec/javascript/node_adapter_spec.js +2 -4
- data/spec/javascript/server/handshake_spec.js +0 -12
- data/spec/javascript/server/integration_spec.js +74 -29
- data/spec/javascript/server_spec.js +0 -11
- data/spec/javascript/web_socket/client_spec.js +121 -0
- data/spec/javascript/web_socket/protocol8parser_spec.js +26 -3
- data/spec/node.js +2 -0
- data/spec/redis.conf +10 -280
- data/spec/ruby/client_spec.rb +101 -8
- data/spec/ruby/engine_spec.rb +106 -0
- data/spec/ruby/server/handshake_spec.rb +0 -12
- data/spec/ruby/server/integration_spec.rb +56 -18
- data/spec/ruby/server_spec.rb +1 -12
- data/spec/ruby/transport_spec.rb +14 -8
- data/spec/ruby/web_socket/client_spec.rb +126 -0
- data/spec/ruby/web_socket/protocol8_parser_spec.rb +28 -3
- metadata +96 -150
data/spec/ruby/server_spec.rb
CHANGED
@@ -32,21 +32,10 @@ describe Faye::Server do
|
|
32
32
|
server.process([{}, {"channel" => "invalid"}], false) { |r| response = r }
|
33
33
|
response.should == []
|
34
34
|
end
|
35
|
-
|
36
|
-
it "rejects unknown meta channels" do
|
37
|
-
response = nil
|
38
|
-
server.process([{"channel" => "/meta/p"}], false) { |r| response = r }
|
39
|
-
response.should == [
|
40
|
-
{ "channel" => "/meta/p",
|
41
|
-
"successful" => false,
|
42
|
-
"error" => "403:/meta/p:Forbidden channel"
|
43
|
-
}
|
44
|
-
]
|
45
|
-
end
|
46
35
|
|
47
36
|
it "routes single messages to appropriate handlers" do
|
48
37
|
server.should_receive(:handshake).with(handshake, false)
|
49
|
-
server.process(handshake, false)
|
38
|
+
server.process(handshake, false)
|
50
39
|
end
|
51
40
|
|
52
41
|
it "routes a list of messages to appropriate handlers" do
|
data/spec/ruby/transport_spec.rb
CHANGED
@@ -9,13 +9,19 @@ describe Faye::Transport do
|
|
9
9
|
|
10
10
|
describe :get do
|
11
11
|
before do
|
12
|
-
Faye::Transport::Local.stub(:usable?).
|
13
|
-
Faye::Transport::Http.stub(:usable?).
|
12
|
+
Faye::Transport::Local.stub(:usable?).and_yield(false)
|
13
|
+
Faye::Transport::Http.stub(:usable?).and_yield(false)
|
14
14
|
end
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
def get_transport(connection_types)
|
17
|
+
transport = nil
|
18
|
+
Faye::Transport.get(client, connection_types) { |t| transport = t }
|
19
|
+
transport
|
20
|
+
end
|
21
|
+
|
22
|
+
let(:transport) { get_transport ["long-polling", "in-process"] }
|
23
|
+
let(:local_transport) { get_transport ["in-process"] }
|
24
|
+
let(:http_transport) { get_transport ["long-polling"] }
|
19
25
|
|
20
26
|
describe "when no transport is usable" do
|
21
27
|
it "raises an exception" do
|
@@ -25,7 +31,7 @@ describe Faye::Transport do
|
|
25
31
|
|
26
32
|
describe "when a less preferred transport is usable" do
|
27
33
|
before do
|
28
|
-
Faye::Transport::Http.stub(:usable?).
|
34
|
+
Faye::Transport::Http.stub(:usable?).and_yield(true)
|
29
35
|
end
|
30
36
|
|
31
37
|
it "returns a transport of the usable type" do
|
@@ -43,8 +49,8 @@ describe Faye::Transport do
|
|
43
49
|
|
44
50
|
describe "when all transports are usable" do
|
45
51
|
before do
|
46
|
-
Faye::Transport::Local.stub(:usable?).
|
47
|
-
Faye::Transport::Http.stub(:usable?).
|
52
|
+
Faye::Transport::Local.stub(:usable?).and_yield(true)
|
53
|
+
Faye::Transport::Http.stub(:usable?).and_yield(true)
|
48
54
|
end
|
49
55
|
|
50
56
|
it "returns the most preferred type" do
|
@@ -0,0 +1,126 @@
|
|
1
|
+
# encoding=utf-8
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
require "thin"
|
6
|
+
Thin::Logging.silent = true
|
7
|
+
|
8
|
+
WebSocketSteps = EM::RSpec.async_steps do
|
9
|
+
def server(port, &callback)
|
10
|
+
@adapter = Faye::RackAdapter.new(:mount => "/bayeux", :timeout => 25)
|
11
|
+
@adapter.listen(port)
|
12
|
+
@port = port
|
13
|
+
EM.add_timer(0.1, &callback)
|
14
|
+
end
|
15
|
+
|
16
|
+
def stop(&callback)
|
17
|
+
@adapter.stop
|
18
|
+
EM.next_tick(&callback)
|
19
|
+
end
|
20
|
+
|
21
|
+
def open_socket(url, &callback)
|
22
|
+
done = false
|
23
|
+
|
24
|
+
resume = lambda do |open|
|
25
|
+
unless done
|
26
|
+
done = true
|
27
|
+
@open = true
|
28
|
+
callback.call
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
@ws = Faye::WebSocket::Client.new(url)
|
33
|
+
|
34
|
+
@ws.onopen = lambda { |e| resume.call(true) }
|
35
|
+
@ws.onclose = lambda { |e| resume.call(false) }
|
36
|
+
end
|
37
|
+
|
38
|
+
def close_socket(&callback)
|
39
|
+
@ws.onclose = lambda do |e|
|
40
|
+
@open = false
|
41
|
+
callback.call
|
42
|
+
end
|
43
|
+
@ws.close
|
44
|
+
end
|
45
|
+
|
46
|
+
def check_open(&callback)
|
47
|
+
@open.should == true
|
48
|
+
callback.call
|
49
|
+
end
|
50
|
+
|
51
|
+
def check_closed(&callback)
|
52
|
+
@open.should == false
|
53
|
+
callback.call
|
54
|
+
end
|
55
|
+
|
56
|
+
def listen_for_message(&callback)
|
57
|
+
@ws.onmessage = lambda { |e| @message = e.data }
|
58
|
+
callback.call
|
59
|
+
end
|
60
|
+
|
61
|
+
def send_sunscription(&callback)
|
62
|
+
@ws.send(JSON.dump "channel" => "/meta/subscribe", "subscription" => "/ws")
|
63
|
+
EM.add_timer(0.1, &callback)
|
64
|
+
end
|
65
|
+
|
66
|
+
def check_subscribe_response(&callback)
|
67
|
+
JSON.parse(@message).should == [{ "channel" => "/meta/subscribe",
|
68
|
+
"successful" => false,
|
69
|
+
"error" => "402:clientId:Missing required parameter",
|
70
|
+
"subscription" => "/ws"
|
71
|
+
}]
|
72
|
+
callback.call
|
73
|
+
end
|
74
|
+
|
75
|
+
def check_no_response(&callback)
|
76
|
+
@message.should == nil
|
77
|
+
callback.call
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe Faye::WebSocket::Client do
|
82
|
+
include WebSocketSteps
|
83
|
+
|
84
|
+
before do
|
85
|
+
Faye.ensure_reactor_running!
|
86
|
+
server 8000
|
87
|
+
sync
|
88
|
+
end
|
89
|
+
|
90
|
+
after { sync ; stop }
|
91
|
+
|
92
|
+
it "can open a connection" do
|
93
|
+
open_socket "ws://localhost:8000/bayeux"
|
94
|
+
check_open
|
95
|
+
end
|
96
|
+
|
97
|
+
it "can close the connection" do
|
98
|
+
open_socket "ws://localhost:8000/bayeux"
|
99
|
+
close_socket
|
100
|
+
check_closed
|
101
|
+
end
|
102
|
+
|
103
|
+
describe "in the OPEN state" do
|
104
|
+
before { open_socket "ws://localhost:8000/bayeux" }
|
105
|
+
|
106
|
+
it "can send and receive messages" do
|
107
|
+
listen_for_message
|
108
|
+
send_sunscription
|
109
|
+
check_subscribe_response
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "in the CLOSED state" do
|
114
|
+
before do
|
115
|
+
open_socket "ws://localhost:8000/bayeux"
|
116
|
+
close_socket
|
117
|
+
end
|
118
|
+
|
119
|
+
it "cannot send and receive messages" do
|
120
|
+
listen_for_message
|
121
|
+
send_sunscription
|
122
|
+
check_no_response
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
126
|
+
|
@@ -26,6 +26,11 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
26
26
|
parse [0x81, 0x05, 0x48, 0x65, 0x6c, 0x6c, 0x6f]
|
27
27
|
end
|
28
28
|
|
29
|
+
it "parses empty text frames" do
|
30
|
+
@web_socket.should_receive(:receive).with("")
|
31
|
+
parse [0x81, 0x00]
|
32
|
+
end
|
33
|
+
|
29
34
|
it "parses fragmented text frames" do
|
30
35
|
@web_socket.should_receive(:receive).with("Hello")
|
31
36
|
parse [0x01, 0x03, 0x48, 0x65, 0x6c]
|
@@ -37,6 +42,11 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
37
42
|
parse [0x81, 0x85] + mask + mask_message(0x48, 0x65, 0x6c, 0x6c, 0x6f)
|
38
43
|
end
|
39
44
|
|
45
|
+
it "parses masked empty text frames" do
|
46
|
+
@web_socket.should_receive(:receive).with("")
|
47
|
+
parse [0x81, 0x80] + mask + mask_message()
|
48
|
+
end
|
49
|
+
|
40
50
|
it "parses masked fragmented text frames" do
|
41
51
|
@web_socket.should_receive(:receive).with("Hello")
|
42
52
|
parse [0x01, 0x81] + mask + mask_message(0x48)
|
@@ -44,10 +54,15 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
44
54
|
end
|
45
55
|
|
46
56
|
it "closes the socket if the frame has an unrecognized opcode" do
|
47
|
-
@web_socket.should_receive(:close).with(
|
57
|
+
@web_socket.should_receive(:close).with(1002, nil, false)
|
48
58
|
parse [0x83, 0x00]
|
49
59
|
end
|
50
60
|
|
61
|
+
it "closes the socket if a close frame is received" do
|
62
|
+
@web_socket.should_receive(:close).with(1000, "Hello", false)
|
63
|
+
parse [0x88, 0x07, 0x03, 0xe8, 0x48, 0x65, 0x6c, 0x6c, 0x6f]
|
64
|
+
end
|
65
|
+
|
51
66
|
it "parses unmasked multibyte text frames" do
|
52
67
|
@web_socket.should_receive(:receive).with(encode "Apple = ")
|
53
68
|
parse [0x81, 0x0b, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x20, 0x3d, 0x20, 0xef, 0xa3, 0xbf]
|
@@ -81,7 +96,7 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
81
96
|
end
|
82
97
|
|
83
98
|
it "replies to pings with a pong" do
|
84
|
-
@web_socket.should_receive(:send).with(
|
99
|
+
@web_socket.should_receive(:send).with([0x4f, 0x48, 0x41, 0x49], :pong)
|
85
100
|
parse [0x89, 0x04, 0x4f, 0x48, 0x41, 0x49]
|
86
101
|
end
|
87
102
|
end
|
@@ -109,7 +124,7 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
109
124
|
end
|
110
125
|
|
111
126
|
it "encodes close frames with an error code" do
|
112
|
-
frame = @parser.frame "Hello", :close,
|
127
|
+
frame = @parser.frame "Hello", :close, 1002
|
113
128
|
bytes(frame).should == [0x88, 0x07, 0x03, 0xea, 0x48, 0x65, 0x6c, 0x6c, 0x6f]
|
114
129
|
end
|
115
130
|
|
@@ -117,4 +132,14 @@ describe Faye::WebSocket::Protocol8Parser do
|
|
117
132
|
bytes(@parser.frame '', :pong).should == [0x8a, 0x00]
|
118
133
|
end
|
119
134
|
end
|
135
|
+
|
136
|
+
describe :utf8 do
|
137
|
+
it "detects valid UTF-8" do
|
138
|
+
Faye.valid_utf8?( [72, 101, 108, 108, 111, 45, 194, 181, 64, 195, 159, 195, 182, 195, 164, 195, 188, 195, 160, 195, 161, 45, 85, 84, 70, 45, 56, 33, 33] ).should be_true
|
139
|
+
end
|
140
|
+
|
141
|
+
it "detects invalid UTF-8" do
|
142
|
+
Faye.valid_utf8?( [206, 186, 225, 189, 185, 207, 131, 206, 188, 206, 181, 237, 160, 128, 101, 100, 105, 116, 101, 100] ).should be_false
|
143
|
+
end
|
144
|
+
end
|
120
145
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faye
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,27 +9,33 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2011-11-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
15
|
+
name: cookiejar
|
16
|
+
requirement: &10861660 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 0.
|
21
|
+
version: 0.3.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: *10861660
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: eventmachine
|
27
|
+
requirement: &10856580 !ruby/object:Gem::Requirement
|
25
28
|
none: false
|
26
29
|
requirements:
|
27
|
-
- -
|
30
|
+
- - ~>
|
28
31
|
- !ruby/object:Gem::Version
|
29
32
|
version: 0.12.0
|
33
|
+
type: :runtime
|
34
|
+
prerelease: false
|
35
|
+
version_requirements: *10856580
|
30
36
|
- !ruby/object:Gem::Dependency
|
31
37
|
name: em-http-request
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
38
|
+
requirement: &10855420 !ruby/object:Gem::Requirement
|
33
39
|
none: false
|
34
40
|
requirements:
|
35
41
|
- - ~>
|
@@ -37,15 +43,10 @@ dependencies:
|
|
37
43
|
version: '0.3'
|
38
44
|
type: :runtime
|
39
45
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: '0.3'
|
46
|
+
version_requirements: *10855420
|
46
47
|
- !ruby/object:Gem::Dependency
|
47
48
|
name: em-hiredis
|
48
|
-
requirement: !ruby/object:Gem::Requirement
|
49
|
+
requirement: &10854340 !ruby/object:Gem::Requirement
|
49
50
|
none: false
|
50
51
|
requirements:
|
51
52
|
- - ! '>='
|
@@ -53,15 +54,10 @@ dependencies:
|
|
53
54
|
version: 0.0.1
|
54
55
|
type: :runtime
|
55
56
|
prerelease: false
|
56
|
-
version_requirements:
|
57
|
-
none: false
|
58
|
-
requirements:
|
59
|
-
- - ! '>='
|
60
|
-
- !ruby/object:Gem::Version
|
61
|
-
version: 0.0.1
|
57
|
+
version_requirements: *10854340
|
62
58
|
- !ruby/object:Gem::Dependency
|
63
59
|
name: json
|
64
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirement: &10853720 !ruby/object:Gem::Requirement
|
65
61
|
none: false
|
66
62
|
requirements:
|
67
63
|
- - ! '>='
|
@@ -69,15 +65,10 @@ dependencies:
|
|
69
65
|
version: '1.0'
|
70
66
|
type: :runtime
|
71
67
|
prerelease: false
|
72
|
-
version_requirements:
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '1.0'
|
68
|
+
version_requirements: *10853720
|
78
69
|
- !ruby/object:Gem::Dependency
|
79
70
|
name: thin
|
80
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirement: &10847560 !ruby/object:Gem::Requirement
|
81
72
|
none: false
|
82
73
|
requirements:
|
83
74
|
- - ~>
|
@@ -85,15 +76,10 @@ dependencies:
|
|
85
76
|
version: '1.2'
|
86
77
|
type: :runtime
|
87
78
|
prerelease: false
|
88
|
-
version_requirements:
|
89
|
-
none: false
|
90
|
-
requirements:
|
91
|
-
- - ~>
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: '1.2'
|
79
|
+
version_requirements: *10847560
|
94
80
|
- !ruby/object:Gem::Dependency
|
95
81
|
name: rack
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
82
|
+
requirement: &10843740 !ruby/object:Gem::Requirement
|
97
83
|
none: false
|
98
84
|
requirements:
|
99
85
|
- - ! '>='
|
@@ -101,15 +87,10 @@ dependencies:
|
|
101
87
|
version: '1.0'
|
102
88
|
type: :runtime
|
103
89
|
prerelease: false
|
104
|
-
version_requirements:
|
105
|
-
none: false
|
106
|
-
requirements:
|
107
|
-
- - ! '>='
|
108
|
-
- !ruby/object:Gem::Version
|
109
|
-
version: '1.0'
|
90
|
+
version_requirements: *10843740
|
110
91
|
- !ruby/object:Gem::Dependency
|
111
92
|
name: jake
|
112
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
+
requirement: &10840940 !ruby/object:Gem::Requirement
|
113
94
|
none: false
|
114
95
|
requirements:
|
115
96
|
- - ! '>='
|
@@ -117,15 +98,10 @@ dependencies:
|
|
117
98
|
version: '0'
|
118
99
|
type: :development
|
119
100
|
prerelease: false
|
120
|
-
version_requirements:
|
121
|
-
none: false
|
122
|
-
requirements:
|
123
|
-
- - ! '>='
|
124
|
-
- !ruby/object:Gem::Version
|
125
|
-
version: '0'
|
101
|
+
version_requirements: *10840940
|
126
102
|
- !ruby/object:Gem::Dependency
|
127
103
|
name: rake
|
128
|
-
requirement: !ruby/object:Gem::Requirement
|
104
|
+
requirement: &10836240 !ruby/object:Gem::Requirement
|
129
105
|
none: false
|
130
106
|
requirements:
|
131
107
|
- - ! '>='
|
@@ -133,15 +109,10 @@ dependencies:
|
|
133
109
|
version: '0'
|
134
110
|
type: :development
|
135
111
|
prerelease: false
|
136
|
-
version_requirements:
|
137
|
-
none: false
|
138
|
-
requirements:
|
139
|
-
- - ! '>='
|
140
|
-
- !ruby/object:Gem::Version
|
141
|
-
version: '0'
|
112
|
+
version_requirements: *10836240
|
142
113
|
- !ruby/object:Gem::Dependency
|
143
114
|
name: rspec
|
144
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
+
requirement: &10831220 !ruby/object:Gem::Requirement
|
145
116
|
none: false
|
146
117
|
requirements:
|
147
118
|
- - ~>
|
@@ -149,15 +120,10 @@ dependencies:
|
|
149
120
|
version: 2.5.0
|
150
121
|
type: :development
|
151
122
|
prerelease: false
|
152
|
-
version_requirements:
|
153
|
-
none: false
|
154
|
-
requirements:
|
155
|
-
- - ~>
|
156
|
-
- !ruby/object:Gem::Version
|
157
|
-
version: 2.5.0
|
123
|
+
version_requirements: *10831220
|
158
124
|
- !ruby/object:Gem::Dependency
|
159
125
|
name: rack-proxy
|
160
|
-
requirement: !ruby/object:Gem::Requirement
|
126
|
+
requirement: &10828160 !ruby/object:Gem::Requirement
|
161
127
|
none: false
|
162
128
|
requirements:
|
163
129
|
- - ! '>='
|
@@ -165,15 +131,10 @@ dependencies:
|
|
165
131
|
version: '0'
|
166
132
|
type: :development
|
167
133
|
prerelease: false
|
168
|
-
version_requirements:
|
169
|
-
none: false
|
170
|
-
requirements:
|
171
|
-
- - ! '>='
|
172
|
-
- !ruby/object:Gem::Version
|
173
|
-
version: '0'
|
134
|
+
version_requirements: *10828160
|
174
135
|
- !ruby/object:Gem::Dependency
|
175
136
|
name: rack-test
|
176
|
-
requirement: !ruby/object:Gem::Requirement
|
137
|
+
requirement: &10826460 !ruby/object:Gem::Requirement
|
177
138
|
none: false
|
178
139
|
requirements:
|
179
140
|
- - ! '>='
|
@@ -181,15 +142,10 @@ dependencies:
|
|
181
142
|
version: '0'
|
182
143
|
type: :development
|
183
144
|
prerelease: false
|
184
|
-
version_requirements:
|
185
|
-
none: false
|
186
|
-
requirements:
|
187
|
-
- - ! '>='
|
188
|
-
- !ruby/object:Gem::Version
|
189
|
-
version: '0'
|
145
|
+
version_requirements: *10826460
|
190
146
|
- !ruby/object:Gem::Dependency
|
191
147
|
name: RedCloth
|
192
|
-
requirement: !ruby/object:Gem::Requirement
|
148
|
+
requirement: &10823260 !ruby/object:Gem::Requirement
|
193
149
|
none: false
|
194
150
|
requirements:
|
195
151
|
- - ~>
|
@@ -197,15 +153,10 @@ dependencies:
|
|
197
153
|
version: 3.0.0
|
198
154
|
type: :development
|
199
155
|
prerelease: false
|
200
|
-
version_requirements:
|
201
|
-
none: false
|
202
|
-
requirements:
|
203
|
-
- - ~>
|
204
|
-
- !ruby/object:Gem::Version
|
205
|
-
version: 3.0.0
|
156
|
+
version_requirements: *10823260
|
206
157
|
- !ruby/object:Gem::Dependency
|
207
158
|
name: sinatra
|
208
|
-
requirement: !ruby/object:Gem::Requirement
|
159
|
+
requirement: &10821560 !ruby/object:Gem::Requirement
|
209
160
|
none: false
|
210
161
|
requirements:
|
211
162
|
- - ! '>='
|
@@ -213,15 +164,10 @@ dependencies:
|
|
213
164
|
version: '0'
|
214
165
|
type: :development
|
215
166
|
prerelease: false
|
216
|
-
version_requirements:
|
217
|
-
none: false
|
218
|
-
requirements:
|
219
|
-
- - ! '>='
|
220
|
-
- !ruby/object:Gem::Version
|
221
|
-
version: '0'
|
167
|
+
version_requirements: *10821560
|
222
168
|
- !ruby/object:Gem::Dependency
|
223
169
|
name: staticmatic
|
224
|
-
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirement: &10000600 !ruby/object:Gem::Requirement
|
225
171
|
none: false
|
226
172
|
requirements:
|
227
173
|
- - ! '>='
|
@@ -229,12 +175,7 @@ dependencies:
|
|
229
175
|
version: '0'
|
230
176
|
type: :development
|
231
177
|
prerelease: false
|
232
|
-
version_requirements:
|
233
|
-
none: false
|
234
|
-
requirements:
|
235
|
-
- - ! '>='
|
236
|
-
- !ruby/object:Gem::Version
|
237
|
-
version: '0'
|
178
|
+
version_requirements: *10000600
|
238
179
|
description:
|
239
180
|
email: jcoglan@gmail.com
|
240
181
|
executables: []
|
@@ -246,72 +187,78 @@ files:
|
|
246
187
|
- README.rdoc
|
247
188
|
- lib/faye-browser-min.js
|
248
189
|
- spec/browser.html
|
190
|
+
- spec/phantom.js
|
191
|
+
- spec/redis.conf
|
249
192
|
- spec/install.sh
|
250
193
|
- spec/thin_proxy.rb
|
251
|
-
- spec/
|
252
|
-
- spec/
|
194
|
+
- spec/ruby/server/handshake_spec.rb
|
195
|
+
- spec/ruby/server/extensions_spec.rb
|
196
|
+
- spec/ruby/server/subscribe_spec.rb
|
197
|
+
- spec/ruby/server/disconnect_spec.rb
|
198
|
+
- spec/ruby/server/unsubscribe_spec.rb
|
199
|
+
- spec/ruby/server/connect_spec.rb
|
200
|
+
- spec/ruby/server/integration_spec.rb
|
201
|
+
- spec/ruby/rack_adapter_spec.rb
|
202
|
+
- spec/ruby/client_spec.rb
|
203
|
+
- spec/ruby/server_spec.rb
|
204
|
+
- spec/ruby/channel_spec.rb
|
205
|
+
- spec/ruby/transport_spec.rb
|
206
|
+
- spec/ruby/engine_spec.rb
|
207
|
+
- spec/ruby/faye_spec.rb
|
208
|
+
- spec/ruby/web_socket/draft75_parser_spec.rb
|
209
|
+
- spec/ruby/web_socket/client_spec.rb
|
210
|
+
- spec/ruby/web_socket/protocol8_parser_spec.rb
|
211
|
+
- spec/ruby/grammar_spec.rb
|
212
|
+
- spec/node.js
|
213
|
+
- spec/javascript/faye_spec.js
|
214
|
+
- spec/javascript/server/disconnect_spec.js
|
215
|
+
- spec/javascript/server/subscribe_spec.js
|
216
|
+
- spec/javascript/server/extensions_spec.js
|
217
|
+
- spec/javascript/server/unsubscribe_spec.js
|
218
|
+
- spec/javascript/server/integration_spec.js
|
219
|
+
- spec/javascript/server/connect_spec.js
|
220
|
+
- spec/javascript/server/handshake_spec.js
|
221
|
+
- spec/javascript/server_spec.js
|
253
222
|
- spec/javascript/engine_spec.js
|
223
|
+
- spec/javascript/transport_spec.js
|
254
224
|
- spec/javascript/channel_spec.js
|
225
|
+
- spec/javascript/node_adapter_spec.js
|
255
226
|
- spec/javascript/client_spec.js
|
256
|
-
- spec/javascript/
|
257
|
-
- spec/javascript/
|
258
|
-
- spec/javascript/
|
227
|
+
- spec/javascript/web_socket/protocol8parser_spec.js
|
228
|
+
- spec/javascript/web_socket/client_spec.js
|
229
|
+
- spec/javascript/web_socket/draft75parser_spec.js
|
259
230
|
- spec/javascript/grammar_spec.js
|
260
|
-
- spec/javascript/node_adapter_spec.js
|
261
|
-
- spec/javascript/server/handshake_spec.js
|
262
|
-
- spec/javascript/server/connect_spec.js
|
263
|
-
- spec/javascript/server/extensions_spec.js
|
264
|
-
- spec/javascript/server/integration_spec.js
|
265
|
-
- spec/javascript/server/unsubscribe_spec.js
|
266
|
-
- spec/javascript/server/disconnect_spec.js
|
267
|
-
- spec/javascript/server/subscribe_spec.js
|
268
|
-
- spec/node.js
|
269
231
|
- spec/testswarm
|
270
|
-
- spec/phantom.js
|
271
|
-
- spec/redis.conf
|
272
|
-
- spec/ruby/web_socket/protocol8_parser_spec.rb
|
273
|
-
- spec/ruby/web_socket/draft75_parser_spec.rb
|
274
|
-
- spec/ruby/transport_spec.rb
|
275
|
-
- spec/ruby/channel_spec.rb
|
276
|
-
- spec/ruby/faye_spec.rb
|
277
|
-
- spec/ruby/client_spec.rb
|
278
|
-
- spec/ruby/server_spec.rb
|
279
|
-
- spec/ruby/engine_spec.rb
|
280
|
-
- spec/ruby/grammar_spec.rb
|
281
|
-
- spec/ruby/rack_adapter_spec.rb
|
282
|
-
- spec/ruby/server/extensions_spec.rb
|
283
|
-
- spec/ruby/server/integration_spec.rb
|
284
|
-
- spec/ruby/server/unsubscribe_spec.rb
|
285
|
-
- spec/ruby/server/subscribe_spec.rb
|
286
|
-
- spec/ruby/server/handshake_spec.rb
|
287
|
-
- spec/ruby/server/disconnect_spec.rb
|
288
|
-
- spec/ruby/server/connect_spec.rb
|
289
232
|
- spec/spec_helper.rb
|
290
|
-
- lib/faye.rb
|
291
|
-
- lib/faye/
|
292
|
-
- lib/faye/protocol/channel.rb
|
293
|
-
- lib/faye/protocol/extensible.rb
|
294
|
-
- lib/faye/protocol/subscription.rb
|
295
|
-
- lib/faye/protocol/server.rb
|
296
|
-
- lib/faye/protocol/client.rb
|
297
|
-
- lib/faye/engines/redis.rb
|
298
|
-
- lib/faye/engines/memory.rb
|
299
|
-
- lib/faye/engines/connection.rb
|
300
|
-
- lib/faye/engines/base.rb
|
301
|
-
- lib/faye/thin_extensions.rb
|
233
|
+
- lib/faye/error.rb
|
234
|
+
- lib/faye/util/namespace.rb
|
302
235
|
- lib/faye/util/web_socket/draft75_parser.rb
|
303
|
-
- lib/faye/util/web_socket/
|
236
|
+
- lib/faye/util/web_socket/client.rb
|
304
237
|
- lib/faye/util/web_socket/protocol8_parser.rb
|
305
|
-
- lib/faye/util/
|
238
|
+
- lib/faye/util/web_socket/draft76_parser.rb
|
239
|
+
- lib/faye/util/web_socket/api.rb
|
306
240
|
- lib/faye/util/web_socket.rb
|
307
|
-
- lib/faye/adapters/rack_adapter.rb
|
308
|
-
- lib/faye/mixins/timeouts.rb
|
309
241
|
- lib/faye/mixins/logging.rb
|
310
242
|
- lib/faye/mixins/publisher.rb
|
311
|
-
- lib/faye/
|
243
|
+
- lib/faye/mixins/timeouts.rb
|
244
|
+
- lib/faye/thin_extensions.rb
|
312
245
|
- lib/faye/transport/http.rb
|
313
246
|
- lib/faye/transport/local.rb
|
314
247
|
- lib/faye/transport/transport.rb
|
248
|
+
- lib/faye/transport/web_socket.rb
|
249
|
+
- lib/faye/protocol/client.rb
|
250
|
+
- lib/faye/protocol/publication.rb
|
251
|
+
- lib/faye/protocol/subscription.rb
|
252
|
+
- lib/faye/protocol/server.rb
|
253
|
+
- lib/faye/protocol/extensible.rb
|
254
|
+
- lib/faye/protocol/channel.rb
|
255
|
+
- lib/faye/protocol/grammar.rb
|
256
|
+
- lib/faye/adapters/rack_adapter.rb
|
257
|
+
- lib/faye/engines/connection.rb
|
258
|
+
- lib/faye/engines/memory.rb
|
259
|
+
- lib/faye/engines/redis.rb
|
260
|
+
- lib/faye/engines/base.rb
|
261
|
+
- lib/faye.rb
|
315
262
|
homepage: http://faye.jcoglan.com
|
316
263
|
licenses: []
|
317
264
|
post_install_message:
|
@@ -334,9 +281,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
334
281
|
version: '0'
|
335
282
|
requirements: []
|
336
283
|
rubyforge_project:
|
337
|
-
rubygems_version: 1.8.
|
284
|
+
rubygems_version: 1.8.10
|
338
285
|
signing_key:
|
339
286
|
specification_version: 3
|
340
287
|
summary: Simple pub/sub messaging for the web
|
341
288
|
test_files: []
|
342
|
-
has_rdoc:
|