class LiteCable::Server::HeartBeat

Sends pings to sockets

Constants

BEAT_INTERVAL

Public Class Methods

new() click to toggle source
# File lib/lite_cable/server/heart_beat.rb, line 9
def initialize
  @sockets = []
  run
end

Public Instance Methods

add(socket) click to toggle source
# File lib/lite_cable/server/heart_beat.rb, line 14
def add(socket)
  @sockets << socket
end
remove(socket) click to toggle source
# File lib/lite_cable/server/heart_beat.rb, line 18
def remove(socket)
  @sockets.delete(socket)
end
run() click to toggle source

rubocop: disable Metrics/MethodLength

# File lib/lite_cable/server/heart_beat.rb, line 27
def run
  Thread.new do
    Thread.current.abort_on_exception = true
    loop do
      break if @stopped

      unless @sockets.empty?
        msg = ping_message Time.now.to_i
        @sockets.each do |socket|
          socket.transmit msg
        end
      end

      sleep BEAT_INTERVAL
    end
  end
end
stop() click to toggle source
# File lib/lite_cable/server/heart_beat.rb, line 22
def stop
  @stopped = true
end

Private Instance Methods

ping_message(time) click to toggle source

rubocop: enable Metrics/MethodLength

# File lib/lite_cable/server/heart_beat.rb, line 48
def ping_message(time)
  {type: LiteCable::INTERNAL[:message_types][:ping], message: time}.to_json
end