2014-03-25 114 views
12

我有一个简单的闪亮应用程序,用于跟踪用户推送某个操作按钮的次数(actionButton()),并将此总数与其他用户一起报告给用户信息。在一个R Shiny应用程序中同时处理多个用户

现在我知道Shiny R为每个应用程序创建一个R会话,因此如果多个用户同时访问同一个应用程序,他们都使用同一个R会话。因此,报告的用户X的操作按钮次数最终成为在当前R会话期间已经访问该应用的所有用户的操作按钮按压的总和。

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

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

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

回答

22

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

结帐教程的这一章的详细信息在范围界定:http://rstudio.github.io/shiny/tutorial/#scoping

基本上,shinyServer()表达的内部定义的东西将是专用于单个用户的会话。您在shinySever之外放置的任何变量将在所有用户之间全局共享。因此,如果您不希望跨会话共享这些变量(例如,点击次数计数器),则可以保留shinyServer()以内的变量。

+0

是的,你是对的。我在shinyServer()函数之前加入了一些代码,它应该放在里面。我希望我能弄清楚如何“接受”你的答案(我是Stackoverflow的新手)。 –

相关问题