require "http/web_socket" require "json" total = 0 min = 1000000000 max = 0 cnt_s = Atomic(Int32).new(0) mutex_s = Mutex.new cnt_r = Atomic(Int32).new(0) mutex_r = Mutex.new start = Time.now duration=Time::Span.new(0,0,45) endt = start+duration (1..10).each do spawn do soc = HTTP::WebSocket.new URI.parse("http://127.0.0.1:3000/socket/user/authenticate") soc.on_message do |message| begin mess = JSON.parse message t = Time.now.to_unix_f - mess["curr"].as_f mutex_r.synchronize do min = Math.min(min, t) max = Math.max(max, t) total += t cnt_r.add 1 end rescue puts message end end spawn do soc.run end curr=Time.now while endt>curr data = Hash{"user" => "dummy@example.org", "api_token" => "576231a1-18e6-4fbd-b058-b9d23fa1b456", "curr" => curr.to_unix_f}.to_json soc.send data cnt_s.add 1 curr = Time.now end end end scurr=Time.now while scurr