Обычно сервер Shiny порождает отдельные экземпляры для отдельных пользователей, так что несколько человек могут по отдельности использовать одно и то же приложение одновременно. Этот ответ показывает, как создать простую многопользовательскую чат-комнату, используя Shiny, а этот ответ объясняет, как несколько пользователей могут подключаться к одному сеансу через прямой IP. Я получил пример чата, и два пользователя сразу видят сообщения сразу после их отправки и могут общаться друг с другом.
Мне интересно, возможно ли вообще использовать Shiny для (экспериментального) сценария, когда два пользователя, взаимодействуя друг с другом, увидели бы различных элементов графического интерфейса на соответствующих экранах и различный вывод В зависимости от того, чья очередь «играть». Например, если user1 является «начинающим игроком», он увидит три кнопки и нажмет одну из них, появится соответствующее изображение для user2 (не для user1), user2 нажимает кнопку (которая, по его мнению, соответствует изображению), а затем появляется соответствующее изображение для пользователя user1, и пользователь1 нажимает кнопку «правильно» / «неправильно», чтобы отправить отзыв; они не должны видеть, кто нажимает на какую кнопку, ни изображение, которое видит другой (если на самом деле сложно скрыть элементы GUI, то их прерывание / прерывистое отключение также хорошо, если они не видят того, что делает другой).
Или более наглядно:
round 1
user1 user2
director guesser
what they see, step by step:
1. [three buttons] [ (blank) ]
2. [clicks one] [ ]
3 [ ] [sees an image & 3 buttons]
4. [ ] [clicks a button]
5. [sees image,2 butns] [ ]
6. [clicks button] [ ]
7. [ ] [sees the message "correct" or "incorrect"]
round 2
user1 user2
guesser director
1. [ ] [three buttons]
...
...
И в следующем раунде они меняются ролями и так далее на несколько раундов.
Я видел похожие экспериментальные сценарии, реализованные с использованием Javascript (jsPsych, nodegame) и Python (psychopy, oTree), но я пытаюсь понять, возможно ли это сделать в Shiny, и если да, то как.