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