Возможно ли вернуть имя подписчика без подписки на отмененный метод?Клиент, не подписавшийся с канала
Когда пользователь отказывается от подписки на канал (из-за отключения или перехода от него), мне нужно убедиться, что флаги клиента установлены в нулевое состояние. Я создал метод очистки, но я не могу выяснить, какой канал следует отправить сообщению очистки. Так как я не могу получить, с какого канала вызывается метод отмены подписки.
class ConversationChannel < ApplicationCable::Channel
def follow(data)
stop_all_streams
conversation = Conversation.find(data['conversation_id'])
if conversation.is_participant?(current_user)
stream_from "conversation:#{data['conversation_id']}"
end
end
def unsubscribed
clear_typing
end
...
def clear_typing
# need way to find out conversation_id of the unsubscribed stream
ActionCable.server.broadcast "conversation:#{data['conversation_id']}", {id: current_user.id, typing: false}
end
end
Я обновил свой вопрос, потому что я думаю, что, может быть, я не спросил совершенно правильно. Я думаю, что нашел решение тоже .. смотрел в источник для метода stop_all_streams и понял, что «потоки» были доступной переменной в ChannelClass – ethayer