Something went wrong. Try again.
Compares number of events / unique repos sent from each listed ATProto relay
Something went wrong. Try again.
1.2 kB · 57 lines · Created 9mo ago
Ruby
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758require 'skyfall'
relays = [ 'atproto.africa', 'bsky.network', 'relay1.us-east.bsky.network', 'relay1.us-west.bsky.network', 'relay.feeds.blue', 'relay.fire.hose.cam', 'relay3.fr.hose.cam', 'relay.upcloud.world', 'relay.hayescmd.net', 'relay.xero.systems', 'northamerica.firehose.network', 'europe.firehose.network', 'asia.firehose.network',]
maxlen = relays.map(&:length).max
relays.each do |host| pid = fork do sky = Skyfall::Firehose.new(host, :subscribe_repos)
events = 0 users = Set.new minute = Time.now.to_i / 60
sky.on_message do |msg| events += 1 users << msg.did
now = Time.now.to_i / 60 if now > minute puts "[#{Time.now}] #{host.ljust(maxlen)} | events: #{events.to_s.ljust(8)} | users: #{users.size}" minute = now end end
sky.on_connecting { puts "[#{Time.now}] #{host}: Connecting..."} sky.on_connect { puts "[#{Time.now}] #{host}: Connected ✓"}
trap("SIGINT") { sky.disconnect }
sky.connect puts "[#{Time.now}] #{host}: Finished." endend
begin sleep 1000000rescue Interrupt puts puts "Stopping..."end