faye 1.0.3 → 1.4.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 +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: []
|