Одновременное обращение с несколькими пользователями в приложении 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(), если вы не хотите, чтобы они делились между сеансами.