2

特定のチャネルにメッセージを公開しました。

redis 127.0.0.1:6379> PUBLISH channel message
(integer) 0

別のRedisクライアントを使用して、チャネルをサブスクライブしました。

redis 127.0.0.1:6379> SUBSCRIBE channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel"
3) (integer) 1

Redisクライアントで、公開されたすべてのメッセージを受け取りました。購読しているチャンネルの購読を解除したいと思います。しかし、Redisクライアントでunsubscribeと入力することはできません。Ctrl + cを使用すると、完全なRedisクライアントが終了します。RedisクライアントでUnsubscribeコマンドを作成するにはどうすればよいですか?

4

1 に答える 1

1

クライアントがブロックされたため、クライアントで購読解除を発行できるとは思いません。unsubscribeの使用方法を示すrubyスクリプトを作成しました。

require 'redis'
r = Redis.new
r.subscribe 'first' do |on|
  on.message do |e, d|
    puts e
    puts d
    r.unsubscribe
  end
end
puts "script was blocked?"

r.unsubscribeを削除すると、スクリプトがブロックされます。また、if句を追加して、client.exの購読を解除するタイミングを確認できます。

r.unsubscribe if d == 'leave'
于 2013-06-21T08:21:17.443 に答える