forked from redis/redis-rb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpubsub.rb
37 lines (27 loc) · 822 Bytes
/
pubsub.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
require "redis"
puts <<-EOS
To play with this example use redis-cli from another terminal, like this:
$ redis-cli publish one hello
Finally force the example to exit sending the 'exit' message with:
$ redis-cli publish two exit
EOS
redis = Redis.new
trap(:INT) { puts; exit }
begin
redis.subscribe(:one, :two) do |on|
on.subscribe do |channel, subscriptions|
puts "Subscribed to ##{channel} (#{subscriptions} subscriptions)"
end
on.message do |channel, message|
puts "##{channel}: #{message}"
redis.unsubscribe if message == "exit"
end
on.unsubscribe do |channel, subscriptions|
puts "Unsubscribed from ##{channel} (#{subscriptions} subscriptions)"
end
end
rescue Redis::BaseConnectionError => error
puts "#{error}, retrying in 1s"
sleep 1
retry
end