Одновременное обращение с несколькими пользователями в приложении R Shiny
У меня есть простое блестящее приложение, которое отслеживает количество раз, когда пользователь нажал определенную кнопку действий (actionButton()
), и эта сумма сообщается пользователю вместе с другой информацией.
Теперь я знаю, что Shiny R создает один сеанс R для каждого приложения, поэтому, если несколько пользователей одновременно обращаются к одному и тому же приложению, все они работают с одним и тем же сеансом R. Следовательно, сообщаемое количество нажатий кнопок действий для пользователя X заканчивается суммой нажатий кнопок действий для всех пользователей, которые обратились к приложению во время текущего сеанса R.
Я хотел бы оставить пользователей отдельными, в некотором смысле создающими виртуальные экземпляры приложения в течение одного сеанса R.
Я понимаю, что когда функция shinyserver()
запускается с аргументом session
, тогда создается объект сеанса, а информация о клиентском компьютере - это хранилище d в session$clientdata
.
Существует ли какой-либо известный способ использования содержимого этого объекта, чтобы настроить и управлять файлами, которые отслеживают состояние различных пользователей, которые обращаются к приложению в любой момент времени?
Ответы
Ответ 1
Я думаю, вы ошибаетесь. Блестящий, по умолчанию, создает один процесс в приложении Shiny, но может облегчить неограниченное количество сеансов (т.е. "Пользовательские подключения" ) в одном приложении/процессе.
Ознакомиться с этой главой учебника для получения дополнительной информации о области охвата: http://rstudio.github.io/shiny/tutorial/#scoping
В принципе, все, что определено внутри выражения shinyServer()
, будет закрыто для сеанса с одним пользователем. Любые переменные, которые вы ставите вне shinySever
, будут глобально распределены между всеми пользователями. Поэтому вы можете просто сохранить свои переменные (например, счетчик кликов) внутри shinyServer()
, если вы не хотите, чтобы они делились между сеансами.