module Sinatra::PubSub::Redis

Public Instance Methods

publish(channel, message) click to toggle source
# File lib/sinatra/pubsub/redis.rb, line 18
def publish(channel, message)
  redis = ::Redis.connect
  redis.publish("pubsub.#{channel}", message)
end
publish_all(message) click to toggle source
# File lib/sinatra/pubsub/redis.rb, line 23
def publish_all(message)
  publish(:all, message)
end
subscribe() click to toggle source
# File lib/sinatra/pubsub/redis.rb, line 6
def subscribe
  redis = ::Redis.connect

  redis.psubscribe('pubsub', 'pubsub.*') do |on|
    on.pmessage do |match, channel, message|
      channel = channel.sub(/\Apubsub\.?/, '')
      channel = channel.empty? ? :all : channel.to_sym
      Stream.publish(channel, message)
    end
  end
end