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

时间:2014-03-25 20:06:18

标签: r shiny

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

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

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

我理解当使用shinyserver()参数运行函数session时,会创建一个会话对象,并且有关客户端计算机的信息存储在session$clientdata中。< / p>

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

1 个答案:

答案 0 :(得分:24)

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

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

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