#
# $ ruby --version
# ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
# 
# Install a gem locally by setting GEM_HOME
# https://stackoverflow.com/questions/486995/ruby-equivalent-of-virtualenv
# export GEM_HOME=$HOME/local/gems
# bundle install faye-websocket
#
# In a different terminal, start a push server:
# $ ws push_server -q
#
# $ ruby devnull_client.rb
# [:open]
# Connected to server
# messages received per second: 115926
# messages received per second: 119156
# messages received per second: 119156
# messages received per second: 119157
# messages received per second: 119156
# messages received per second: 119156
# messages received per second: 119157
# messages received per second: 119156
# messages received per second: 119156
# messages received per second: 119157
# messages received per second: 119156
# messages received per second: 119157
# messages received per second: 119156
# ^C[:close, 1006, ""]
# 
require 'faye/websocket'
require 'eventmachine'

EM.run {
  ws = Faye::WebSocket::Client.new('ws://127.0.0.1:8008')

  counter = 0

  EM.add_periodic_timer(1) do
    print "messages received per second: #{counter}\n"
    counter = 0  # reset counter
  end

  ws.on :open do |event|
    p [:open]
    print "Connected to server\n"
  end

  ws.on :message do |event|
    # Uncomment the next line to validate that we receive something correct
    # p [:message, event.data]
    counter += 1
  end

  ws.on :close do |event|
    p [:close, event.code, event.reason]
    ws = nil
  end
}