lib/isomorfeus/transport.rb in isomorfeus-transport-2.0.22 vs lib/isomorfeus/transport.rb in isomorfeus-transport-2.1.0
- old
+ new
@@ -4,11 +4,10 @@
if RUBY_ENGINE == 'opal'
attr_accessor :socket
def init
@socket = nil
- @initialized = false
promise_connect if Isomorfeus.on_browser? || Isomorfeus.on_mobile?
true
end
def promise_connect(session_id = nil)
@@ -40,27 +39,20 @@
@socket.on_message do |event|
json_hash = `Opal.Hash.$new(JSON.parse(event.data))`
Isomorfeus::Transport::ClientProcessor.process(json_hash)
end
@socket.on_open do |event|
- if @initialized
- requests_in_progress[:requests].each_key do |request|
- agent = get_agent_for_request_in_progress(request)
- promise_send_request(request) if agent && !agent.sent
- end
- promise.resolve(true)
- else
- @initialized = true
- init_promises = []
- Isomorfeus.transport_init_class_names.each do |constant|
- result = constant.constantize.send(:init)
- init_promises << result if result.class == Promise
- end
- if init_promises.size > 0
- Promise.when(*init_promises).then { promise.resolve(true) }
- end
+ open_promise = Promise.new.resolve(true)
+ Isomorfeus.transport_init_class_names.each do |constant|
+ result_promise = constant.constantize.send(:init)
+ open_promise.then { result_promise } if result_promise.class == Promise
end
+ requests_in_progress[:requests].each_key do |request|
+ agent = get_agent_for_request_in_progress(request)
+ open_promise.then { promise_send_request(request) } if agent && !agent.sent
+ end
+ open_promise.then { promise.resolve(true) }
end
promise
end
def disconnect
@@ -98,17 +90,18 @@
register_request_in_progress(request, agent.id)
Isomorfeus.raise_error(message: 'No socket!') unless @socket
begin
@socket.send(`JSON.stringify(#{{request: { agent_ids: { agent.id => request }}}.to_n})`)
agent.sent = true
- after(Isomorfeus.on_ssr? ? 8000 : 20000) do
+ after(Isomorfeus.on_ssr? ? 5000 : 20000) do
unless agent.promise.realized?
agent.promise.reject({agent_response: { error: 'Request timeout!' }, full_response: {}})
end
end
rescue
@socket.close
- after 5000 do
+ after (Isomorfeus.on_ssr? ? 10 : 3000) do
+ @reconnect = true
Isomorfeus::Transport.promise_connect
end
end
end
agent.promise