Compares number of events / unique repos sent from each listed ATProto relay
relay_bench.rb
57 lines 1.2 kB view raw
1require 'skyfall' 2 3relays = [ 4 'atproto.africa', 5 'bsky.network', 6 'relay1.us-east.bsky.network', 7 'relay1.us-west.bsky.network', 8 'relay.feeds.blue', 9 'relay.fire.hose.cam', 10 'relay3.fr.hose.cam', 11 'relay.upcloud.world', 12 'relay.hayescmd.net', 13 'relay.xero.systems', 14 'northamerica.firehose.network', 15 'europe.firehose.network', 16 'asia.firehose.network', 17] 18 19maxlen = relays.map(&:length).max 20 21relays.each do |host| 22 pid = fork do 23 sky = Skyfall::Firehose.new(host, :subscribe_repos) 24 25 events = 0 26 users = Set.new 27 minute = Time.now.to_i / 60 28 29 sky.on_message do |msg| 30 events += 1 31 users << msg.did 32 33 now = Time.now.to_i / 60 34 if now > minute 35 puts "[#{Time.now}] #{host.ljust(maxlen)} | events: #{events.to_s.ljust(8)} | users: #{users.size}" 36 minute = now 37 end 38 end 39 40 sky.on_connecting { puts "[#{Time.now}] #{host}: Connecting..."} 41 sky.on_connect { puts "[#{Time.now}] #{host}: Connected ✓"} 42 43 trap("SIGINT") { 44 sky.disconnect 45 } 46 47 sky.connect 48 puts "[#{Time.now}] #{host}: Finished." 49 end 50end 51 52begin 53 sleep 1000000 54rescue Interrupt 55 puts 56 puts "Stopping..." 57end