在R Shiny应用程序中同时处理多个用户

Hom*_*ite 15 r shiny

我有一个简单的闪亮应用程序,可以跟踪用户按下某个操作按钮(actionButton())的次数,并将此总数与其他信息一起报告给用户.

现在我知道Shiny R为每个应用创建一个R会话,因此如果多个用户同时访问同一个应用,他们都在使用相同的R会话.因此,报告的用户X的动作按钮按下的数量最终是在当前R会话期间访问应用程序的所有用户的动作按钮按下的总和.

在某种意义上,我想让用户分开,在一个R会话中创建应用程序的虚拟实例.

我知道当函数shinyserver()session参数一起运行时,会创建一个会话对象,并且有关客户端计算机的信息存储在其中session$clientdata.

是否有一些已知的方法来利用此对象的内容,以便设置和管理文件,以跟踪在任何给定时间访问应用程序的各种用户的状态?

Jef*_*len 25

我觉得你错了.默认情况下,Shiny会为每个Shiny应用程序创建一个进程,但可以在单个应用程序/进程中促进无限数量的会话(即"用户连接").

有关范围界定的更多信息,请查看本教程的这一章:http://rstudio.github.io/shiny/tutorial/#scoping

基本上,shinyServer()表达式内部定义的任何内容都将对单个用户的会话保密.您放在外面的任何变量都将shinySever在所有用户之间进行全局共享.因此,shinyServer()如果您不希望跨会话共享变量,那么您可以保留变量(例如点击计数器).

  • 链接现已损坏,我认为现在正确的链接是 https://shiny.rstudio.com/articles/scoping.html (3认同)
  • 是的你是对的。我在shinyServer()函数之前放置了一些代码,这些代码应该放在里面。我希望我能弄清楚如何“接受”你的答案(我是 Stackoverflow 的新手)。 (2认同)