faye 1.0.3 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +386 -196
- data/LICENSE.md +12 -0
- data/README.md +4 -30
- data/build/client/faye-browser-min.js +2 -0
- data/build/client/faye-browser-min.js.map +1 -0
- data/build/client/faye-browser.js +3371 -0
- data/build/client/faye-browser.js.map +1 -0
- data/lib/faye.rb +10 -14
- data/lib/faye/adapters/rack_adapter.rb +64 -34
- data/lib/faye/engines/connection.rb +7 -7
- data/lib/faye/engines/memory.rb +7 -8
- data/lib/faye/engines/proxy.rb +14 -15
- data/lib/faye/error.rb +0 -1
- data/lib/faye/mixins/deferrable.rb +0 -1
- data/lib/faye/mixins/logging.rb +0 -1
- data/lib/faye/mixins/publisher.rb +0 -1
- data/lib/faye/mixins/timeouts.rb +0 -1
- data/lib/faye/protocol/channel.rb +6 -8
- data/lib/faye/protocol/client.rb +109 -161
- data/lib/faye/protocol/dispatcher.rb +170 -0
- data/lib/faye/protocol/extensible.rb +1 -2
- data/lib/faye/protocol/grammar.rb +0 -1
- data/lib/faye/protocol/scheduler.rb +43 -0
- data/lib/faye/protocol/server.rb +23 -14
- data/lib/faye/protocol/socket.rb +0 -1
- data/lib/faye/protocol/subscription.rb +17 -2
- data/lib/faye/transport/http.rb +43 -33
- data/lib/faye/transport/local.rb +6 -5
- data/lib/faye/transport/transport.rb +69 -38
- data/lib/faye/transport/web_socket.rb +47 -41
- data/lib/faye/util/namespace.rb +0 -1
- metadata +59 -29
- data/lib/faye-browser-min.js +0 -3
- data/lib/faye-browser-min.js.map +0 -1
- data/lib/faye-browser.js +0 -2541
- data/lib/faye/protocol/envelope.rb +0 -24
data/lib/faye/transport/local.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Faye
|
2
2
|
|
3
3
|
class Transport::Local < Transport
|
4
|
-
def self.usable?(
|
4
|
+
def self.usable?(dispatcher, endpoint, &callback)
|
5
5
|
callback.call(Server === endpoint)
|
6
6
|
end
|
7
7
|
|
@@ -9,10 +9,11 @@ module Faye
|
|
9
9
|
false
|
10
10
|
end
|
11
11
|
|
12
|
-
def request(
|
13
|
-
|
14
|
-
|
15
|
-
|
12
|
+
def request(messages)
|
13
|
+
EventMachine.next_tick do
|
14
|
+
@endpoint.process(messages, nil) do |replies|
|
15
|
+
receive(Faye.copy_object(replies))
|
16
|
+
end
|
16
17
|
end
|
17
18
|
end
|
18
19
|
end
|
@@ -5,13 +5,20 @@ module Faye
|
|
5
5
|
include Publisher
|
6
6
|
include Timeouts
|
7
7
|
|
8
|
+
DEFAULT_PORTS = { 'http' => 80, 'https' => 433, 'ws' => 80, 'wss' => 443 }
|
9
|
+
|
8
10
|
attr_reader :endpoint
|
9
11
|
|
10
|
-
def initialize(
|
12
|
+
def initialize(dispatcher, endpoint)
|
11
13
|
super()
|
12
|
-
@
|
13
|
-
@endpoint
|
14
|
-
@outbox
|
14
|
+
@dispatcher = dispatcher
|
15
|
+
@endpoint = endpoint
|
16
|
+
@outbox = []
|
17
|
+
@proxy = @dispatcher.proxy.dup
|
18
|
+
|
19
|
+
@proxy[:origin] ||= @endpoint.respond_to?(:find_proxy) ?
|
20
|
+
@endpoint.find_proxy :
|
21
|
+
nil
|
15
22
|
end
|
16
23
|
|
17
24
|
def batching?
|
@@ -21,7 +28,7 @@ module Faye
|
|
21
28
|
def close
|
22
29
|
end
|
23
30
|
|
24
|
-
def encode(
|
31
|
+
def encode(messages)
|
25
32
|
''
|
26
33
|
end
|
27
34
|
|
@@ -29,35 +36,50 @@ module Faye
|
|
29
36
|
self.class.connection_type
|
30
37
|
end
|
31
38
|
|
32
|
-
def
|
33
|
-
message
|
34
|
-
client_id = @client.instance_eval { @client_id }
|
35
|
-
debug('Client ? sending message to ?: ?', client_id, @endpoint, message)
|
39
|
+
def send_message(message)
|
40
|
+
debug('Client ? sending message to ? via ?: ?', @dispatcher.client_id, @endpoint, connection_type, message)
|
36
41
|
|
37
|
-
|
42
|
+
unless batching?
|
43
|
+
promise = EventMachine::DefaultDeferrable.new
|
44
|
+
promise.succeed(request([message]))
|
45
|
+
return promise
|
46
|
+
end
|
38
47
|
|
39
|
-
@outbox <<
|
48
|
+
@outbox << message
|
49
|
+
flush_large_batch
|
40
50
|
|
41
51
|
if message['channel'] == Channel::HANDSHAKE
|
42
|
-
return
|
52
|
+
return publish(0.01)
|
43
53
|
end
|
44
54
|
|
45
55
|
if message['channel'] == Channel::CONNECT
|
46
56
|
@connection_message = message
|
47
57
|
end
|
48
58
|
|
49
|
-
|
50
|
-
|
59
|
+
publish(Engine::MAX_DELAY)
|
60
|
+
end
|
61
|
+
|
62
|
+
private
|
63
|
+
|
64
|
+
def publish(delay)
|
65
|
+
@promise ||= EventMachine::DefaultDeferrable.new
|
66
|
+
|
67
|
+
add_timeout(:publish, delay) do
|
68
|
+
flush
|
69
|
+
@promise = nil
|
70
|
+
end
|
71
|
+
|
72
|
+
@promise
|
51
73
|
end
|
52
74
|
|
53
75
|
def flush
|
54
76
|
remove_timeout(:publish)
|
55
77
|
|
56
78
|
if @outbox.size > 1 and @connection_message
|
57
|
-
@connection_message['advice'] = {'timeout' => 0}
|
79
|
+
@connection_message['advice'] = { 'timeout' => 0 }
|
58
80
|
end
|
59
81
|
|
60
|
-
request(@outbox)
|
82
|
+
@promise.succeed(request(@outbox))
|
61
83
|
|
62
84
|
@connection_message = nil
|
63
85
|
@outbox = []
|
@@ -65,35 +87,41 @@ module Faye
|
|
65
87
|
|
66
88
|
def flush_large_batch
|
67
89
|
string = encode(@outbox)
|
68
|
-
return if string.size < @
|
90
|
+
return if string.size < @dispatcher.max_request_size
|
69
91
|
last = @outbox.pop
|
92
|
+
|
93
|
+
@promise ||= EventMachine::DefaultDeferrable.new
|
70
94
|
flush
|
95
|
+
|
71
96
|
@outbox.push(last) if last
|
72
97
|
end
|
73
98
|
|
74
|
-
def receive(
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
debug('Client ? received from ?: ?', client_id, @endpoint,
|
79
|
-
responses.each { |response| @client.receive_message(response) }
|
80
|
-
end
|
99
|
+
def receive(replies)
|
100
|
+
return unless replies
|
101
|
+
replies = [replies].flatten
|
102
|
+
|
103
|
+
debug('Client ? received from ? via ?: ?', @dispatcher.client_id, @endpoint, connection_type, replies)
|
81
104
|
|
82
|
-
|
83
|
-
|
105
|
+
replies.each do |reply|
|
106
|
+
@dispatcher.handle_response(reply)
|
107
|
+
end
|
84
108
|
end
|
85
109
|
|
86
|
-
|
110
|
+
def handle_error(messages, immediate = false)
|
111
|
+
debug('Client ? failed to send to ? via ?: ?', @dispatcher.client_id, @endpoint, connection_type, messages)
|
112
|
+
|
113
|
+
messages.each do |message|
|
114
|
+
@dispatcher.handle_error(message, immediate)
|
115
|
+
end
|
116
|
+
end
|
87
117
|
|
88
118
|
def get_cookies
|
89
|
-
|
90
|
-
@client.cookies.get_cookies(@endpoint.to_s) * ';'
|
119
|
+
@dispatcher.cookies.get_cookies(@endpoint.to_s) * ';'
|
91
120
|
end
|
92
121
|
|
93
122
|
def store_cookies(set_cookie)
|
94
|
-
return @client.cookies
|
95
123
|
[*set_cookie].compact.each do |cookie|
|
96
|
-
@
|
124
|
+
@dispatcher.cookies.set_cookie(@endpoint.to_s, cookie)
|
97
125
|
end
|
98
126
|
end
|
99
127
|
|
@@ -102,24 +130,24 @@ module Faye
|
|
102
130
|
class << self
|
103
131
|
attr_accessor :connection_type
|
104
132
|
|
105
|
-
def get(
|
106
|
-
endpoint =
|
133
|
+
def get(dispatcher, allowed, disabled, &callback)
|
134
|
+
endpoint = dispatcher.endpoint
|
107
135
|
|
108
136
|
select = lambda do |(conn_type, klass), resume|
|
109
|
-
conn_endpoint =
|
137
|
+
conn_endpoint = dispatcher.endpoint_for(conn_type)
|
110
138
|
|
111
139
|
if disabled.include?(conn_type)
|
112
140
|
next resume.call
|
113
141
|
end
|
114
142
|
|
115
143
|
unless allowed.include?(conn_type)
|
116
|
-
klass.usable?(
|
144
|
+
klass.usable?(dispatcher, conn_endpoint) { |u| }
|
117
145
|
next resume.call
|
118
146
|
end
|
119
147
|
|
120
|
-
klass.usable?(
|
148
|
+
klass.usable?(dispatcher, conn_endpoint) do |is_usable|
|
121
149
|
next resume.call unless is_usable
|
122
|
-
transport = klass.respond_to?(:create) ? klass.create(
|
150
|
+
transport = klass.respond_to?(:create) ? klass.create(dispatcher, conn_endpoint) : klass.new(dispatcher, conn_endpoint)
|
123
151
|
callback.call(transport)
|
124
152
|
end
|
125
153
|
end
|
@@ -135,6 +163,10 @@ module Faye
|
|
135
163
|
@transports << [type, klass]
|
136
164
|
klass.connection_type = type
|
137
165
|
end
|
166
|
+
|
167
|
+
def connection_types
|
168
|
+
@transports.map { |t| t[0] }
|
169
|
+
end
|
138
170
|
end
|
139
171
|
|
140
172
|
%w[local web_socket http].each do |type|
|
@@ -143,4 +175,3 @@ module Faye
|
|
143
175
|
|
144
176
|
end
|
145
177
|
end
|
146
|
-
|
@@ -12,13 +12,21 @@ module Faye
|
|
12
12
|
|
13
13
|
include Deferrable
|
14
14
|
|
15
|
-
|
16
|
-
|
15
|
+
class Request
|
16
|
+
include Deferrable
|
17
|
+
|
18
|
+
def close
|
19
|
+
callback { |socket| socket.close }
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.usable?(dispatcher, endpoint, &callback)
|
24
|
+
create(dispatcher, endpoint).usable?(&callback)
|
17
25
|
end
|
18
26
|
|
19
|
-
def self.create(
|
20
|
-
sockets =
|
21
|
-
sockets[endpoint.to_s] ||= new(
|
27
|
+
def self.create(dispatcher, endpoint)
|
28
|
+
sockets = dispatcher.transports[:websocket] ||= {}
|
29
|
+
sockets[endpoint.to_s] ||= new(dispatcher, endpoint)
|
22
30
|
end
|
23
31
|
|
24
32
|
def batching?
|
@@ -31,16 +39,20 @@ module Faye
|
|
31
39
|
connect
|
32
40
|
end
|
33
41
|
|
34
|
-
def request(
|
42
|
+
def request(messages)
|
35
43
|
@pending ||= Set.new
|
36
|
-
|
44
|
+
messages.each { |message| @pending.add(message) }
|
45
|
+
|
46
|
+
promise = Request.new
|
37
47
|
|
38
48
|
callback do |socket|
|
39
|
-
next unless socket
|
40
|
-
messages = envelopes.map { |e| e.message }
|
49
|
+
next unless socket and socket.ready_state == 1
|
41
50
|
socket.send(Faye.to_json(messages))
|
51
|
+
promise.succeed(socket)
|
42
52
|
end
|
53
|
+
|
43
54
|
connect
|
55
|
+
promise
|
44
56
|
end
|
45
57
|
|
46
58
|
def connect
|
@@ -48,19 +60,28 @@ module Faye
|
|
48
60
|
return unless @state == UNCONNECTED
|
49
61
|
@state = CONNECTING
|
50
62
|
|
51
|
-
|
52
|
-
headers
|
63
|
+
url = @endpoint.dup
|
64
|
+
headers = @dispatcher.headers.dup
|
65
|
+
extensions = @dispatcher.ws_extensions
|
66
|
+
cookie = get_cookies
|
53
67
|
|
54
|
-
url = @endpoint.dup
|
55
68
|
url.scheme = PROTOCOLS[url.scheme]
|
56
|
-
|
69
|
+
headers['Cookie'] = cookie unless cookie == ''
|
70
|
+
|
71
|
+
options = {
|
72
|
+
:extensions => extensions,
|
73
|
+
:headers => headers,
|
74
|
+
:proxy => @proxy,
|
75
|
+
:tls => @dispatcher.tls
|
76
|
+
}
|
77
|
+
|
78
|
+
socket = Faye::WebSocket::Client.new(url.to_s, [], options)
|
57
79
|
|
58
80
|
socket.onopen = lambda do |*args|
|
59
81
|
store_cookies(socket.headers['Set-Cookie'])
|
60
82
|
@socket = socket
|
61
83
|
@state = CONNECTED
|
62
84
|
@ever_connected = true
|
63
|
-
ping
|
64
85
|
set_deferred_status(:succeeded, socket)
|
65
86
|
end
|
66
87
|
|
@@ -74,35 +95,29 @@ module Faye
|
|
74
95
|
|
75
96
|
@socket = nil
|
76
97
|
@state = UNCONNECTED
|
77
|
-
remove_timeout(:ping)
|
78
|
-
set_deferred_status(:unknown)
|
79
98
|
|
80
99
|
pending = @pending ? @pending.to_a : []
|
81
100
|
@pending = nil
|
82
101
|
|
83
|
-
if was_connected
|
84
|
-
|
85
|
-
|
86
|
-
handle_error(pending)
|
102
|
+
if was_connected or @ever_connected
|
103
|
+
set_deferred_status(:unknown)
|
104
|
+
handle_error(pending, was_connected)
|
87
105
|
else
|
88
106
|
set_deferred_status(:failed)
|
89
107
|
end
|
90
108
|
end
|
91
109
|
|
92
110
|
socket.onmessage = lambda do |event|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
next unless envelope = @pending.find { |e| e.id == message['id'] }
|
102
|
-
@pending.delete(envelope)
|
103
|
-
envelopes << envelope
|
111
|
+
replies = MultiJson.load(event.data) rescue nil
|
112
|
+
next if replies.nil?
|
113
|
+
replies = [replies].flatten
|
114
|
+
|
115
|
+
replies.each do |reply|
|
116
|
+
next unless reply.has_key?('successful')
|
117
|
+
next unless message = @pending.find { |m| m['id'] == reply['id'] }
|
118
|
+
@pending.delete(message)
|
104
119
|
end
|
105
|
-
receive(
|
120
|
+
receive(replies)
|
106
121
|
end
|
107
122
|
end
|
108
123
|
|
@@ -110,15 +125,6 @@ module Faye
|
|
110
125
|
return unless @socket
|
111
126
|
@socket.close
|
112
127
|
end
|
113
|
-
|
114
|
-
private
|
115
|
-
|
116
|
-
def ping
|
117
|
-
return unless @socket
|
118
|
-
@socket.send('[]')
|
119
|
-
timeout = @client.instance_eval { @advice['timeout'] }
|
120
|
-
add_timeout(:ping, timeout/2000.0) { ping }
|
121
|
-
end
|
122
128
|
end
|
123
129
|
|
124
130
|
Transport.register 'websocket', Transport::WebSocket
|
data/lib/faye/util/namespace.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: faye
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Coglan
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2020-07-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cookiejar
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 1.1.6
|
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.6
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: eventmachine
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: 0.
|
61
|
+
version: 0.11.0
|
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
|
-
version: 0.
|
68
|
+
version: 0.11.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: multi_json
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -100,14 +100,14 @@ dependencies:
|
|
100
100
|
requirements:
|
101
101
|
- - ">="
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version: 0.
|
103
|
+
version: 0.5.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
|
-
version: 0.
|
110
|
+
version: 0.5.1
|
111
111
|
- !ruby/object:Gem::Dependency
|
112
112
|
name: compass
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - "~>"
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: 3.1.0
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: permessage_deflate
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: 0.1.0
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: 0.1.0
|
139
153
|
- !ruby/object:Gem::Dependency
|
140
154
|
name: puma
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
@@ -192,48 +206,62 @@ dependencies:
|
|
192
206
|
- - ">="
|
193
207
|
- !ruby/object:Gem::Version
|
194
208
|
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: RedCloth
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: 3.0.0
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: 3.0.0
|
195
223
|
- !ruby/object:Gem::Dependency
|
196
224
|
name: rspec
|
197
225
|
requirement: !ruby/object:Gem::Requirement
|
198
226
|
requirements:
|
199
|
-
- - "
|
227
|
+
- - "~>"
|
200
228
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
229
|
+
version: 2.99.0
|
202
230
|
type: :development
|
203
231
|
prerelease: false
|
204
232
|
version_requirements: !ruby/object:Gem::Requirement
|
205
233
|
requirements:
|
206
|
-
- - "
|
234
|
+
- - "~>"
|
207
235
|
- !ruby/object:Gem::Version
|
208
|
-
version:
|
236
|
+
version: 2.99.0
|
209
237
|
- !ruby/object:Gem::Dependency
|
210
238
|
name: rspec-eventmachine
|
211
239
|
requirement: !ruby/object:Gem::Requirement
|
212
240
|
requirements:
|
213
241
|
- - ">="
|
214
242
|
- !ruby/object:Gem::Version
|
215
|
-
version:
|
243
|
+
version: 0.2.0
|
216
244
|
type: :development
|
217
245
|
prerelease: false
|
218
246
|
version_requirements: !ruby/object:Gem::Requirement
|
219
247
|
requirements:
|
220
248
|
- - ">="
|
221
249
|
- !ruby/object:Gem::Version
|
222
|
-
version:
|
250
|
+
version: 0.2.0
|
223
251
|
- !ruby/object:Gem::Dependency
|
224
|
-
name:
|
252
|
+
name: sass
|
225
253
|
requirement: !ruby/object:Gem::Requirement
|
226
254
|
requirements:
|
227
255
|
- - "~>"
|
228
256
|
- !ruby/object:Gem::Version
|
229
|
-
version: 3.
|
257
|
+
version: 3.2.0
|
230
258
|
type: :development
|
231
259
|
prerelease: false
|
232
260
|
version_requirements: !ruby/object:Gem::Requirement
|
233
261
|
requirements:
|
234
262
|
- - "~>"
|
235
263
|
- !ruby/object:Gem::Version
|
236
|
-
version: 3.
|
264
|
+
version: 3.2.0
|
237
265
|
- !ruby/object:Gem::Dependency
|
238
266
|
name: sinatra
|
239
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -318,7 +346,7 @@ dependencies:
|
|
318
346
|
- - ">="
|
319
347
|
- !ruby/object:Gem::Version
|
320
348
|
version: 4.0.0
|
321
|
-
description:
|
349
|
+
description:
|
322
350
|
email: jcoglan@gmail.com
|
323
351
|
executables: []
|
324
352
|
extensions: []
|
@@ -326,10 +354,12 @@ extra_rdoc_files:
|
|
326
354
|
- README.md
|
327
355
|
files:
|
328
356
|
- CHANGELOG.md
|
357
|
+
- LICENSE.md
|
329
358
|
- README.md
|
330
|
-
-
|
331
|
-
-
|
332
|
-
-
|
359
|
+
- build/client/faye-browser-min.js
|
360
|
+
- build/client/faye-browser-min.js.map
|
361
|
+
- build/client/faye-browser.js
|
362
|
+
- build/client/faye-browser.js.map
|
333
363
|
- lib/faye.rb
|
334
364
|
- lib/faye/adapters/rack_adapter.rb
|
335
365
|
- lib/faye/adapters/static_server.rb
|
@@ -343,10 +373,11 @@ files:
|
|
343
373
|
- lib/faye/mixins/timeouts.rb
|
344
374
|
- lib/faye/protocol/channel.rb
|
345
375
|
- lib/faye/protocol/client.rb
|
346
|
-
- lib/faye/protocol/
|
376
|
+
- lib/faye/protocol/dispatcher.rb
|
347
377
|
- lib/faye/protocol/extensible.rb
|
348
378
|
- lib/faye/protocol/grammar.rb
|
349
379
|
- lib/faye/protocol/publication.rb
|
380
|
+
- lib/faye/protocol/scheduler.rb
|
350
381
|
- lib/faye/protocol/server.rb
|
351
382
|
- lib/faye/protocol/socket.rb
|
352
383
|
- lib/faye/protocol/subscription.rb
|
@@ -355,11 +386,11 @@ files:
|
|
355
386
|
- lib/faye/transport/transport.rb
|
356
387
|
- lib/faye/transport/web_socket.rb
|
357
388
|
- lib/faye/util/namespace.rb
|
358
|
-
homepage:
|
389
|
+
homepage: https://faye.jcoglan.com
|
359
390
|
licenses:
|
360
|
-
-
|
391
|
+
- Apache-2.0
|
361
392
|
metadata: {}
|
362
|
-
post_install_message:
|
393
|
+
post_install_message:
|
363
394
|
rdoc_options:
|
364
395
|
- "--main"
|
365
396
|
- README.md
|
@@ -378,9 +409,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
378
409
|
- !ruby/object:Gem::Version
|
379
410
|
version: '0'
|
380
411
|
requirements: []
|
381
|
-
|
382
|
-
|
383
|
-
signing_key:
|
412
|
+
rubygems_version: 3.1.2
|
413
|
+
signing_key:
|
384
414
|
specification_version: 4
|
385
415
|
summary: Simple pub/sub messaging for the web
|
386
416
|
test_files: []
|