Я пытаюсь создать систему уведомлений с потоками Redis и Sinatra. Однако я не могу понять, когда соединение закрывается, поэтому блокирующий блок блокировки Redis, кажется, никогда не закрывается. Каков наилучший способ достичь этого?Ловить подключение клиента отключить в подписке redis
get '/user/:id/next_notification' do
stream :keep_open do |out|
$redis.subscribe("notifications:#{params[:id]}") { |on|
on.message { |channel, msg|
$redis.unsubscribe
out << msg
}
}
out.callback {
puts "unsub"
# $redis.unsubscribe
}
out.errback {
puts "unsub"
# $redis.unsubscribe
}
end
end
Попробуйте установить тайм-аут при создании объекта Redis: 'Redis.new (: тайм-аут => 0)' – fmendez
Я попытался Redis.new (хост:, порт: , тайм-аут: 10) без Синатра потока, но никогда квиты. –