class Pakyow::Realtime::Server::Adapters::Redis::Subscriber
Public Class Methods
new(redis, channel, &callback)
click to toggle source
# File lib/pakyow/realtime/server/adapters/redis.rb, line 241 def initialize(redis, channel, &callback) @redis, @channel, @callback = redis, channel, callback @thread = Thread.new do subscribe end end
Public Instance Methods
disconnect()
click to toggle source
# File lib/pakyow/realtime/server/adapters/redis.rb, line 249 def disconnect @thread.exit @redis.disconnect! end
resubscribe()
click to toggle source
# File lib/pakyow/realtime/server/adapters/redis.rb, line 272 def resubscribe sleep 0.25 subscribe end
subscribe()
click to toggle source
# File lib/pakyow/realtime/server/adapters/redis.rb, line 254 def subscribe @redis.subscribe(@channel) do |on| on.message do |_, payload| begin @callback.call(payload) rescue => error Pakyow.logger.error "[Pakyow::Realtime::Server::Adapters::Redis] Subscriber callback failed: #{error}" end end end rescue ::Redis::CannotConnectError Pakyow.logger.error "[Pakyow::Realtime::Server::Adapters::Redis] Subscriber disconnected" resubscribe rescue => error Pakyow.logger.error "[Pakyow::Realtime::Server::Adapters::Redis] Subscriber crashed: #{error}" resubscribe end