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