Eu não acho que você pode emitir unsubscribe no cliente porque o cliente foi bloqueado. Eu escrevi um script ruby para mostrar como usar unsubscribe.
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?"
Se você remover o r.unsubscribe, o script será bloqueado. E você pode adicionar a cláusula if para verificar quando cancelar a assinatura do client.ex:
r.unsubscribe if d == 'leave'