Получить системное время клиента в R Shiny, вероятно, с Javascript - PullRequest
0 голосов
/ 09 октября 2019

Я создаю игру в Shiny, которая нуждается в точных измерениях времени, которое пользователь нажимает на фотографию (в идеале с точностью до сотой доли секунды, но сработала бы и десятая часть секунды).

Время сервера является функцией интернет-соединения, которое может быть медленным с задержкой, а что нет. Поэтому я хотел бы получить доступ к времени на компьютере клиента.

Я могу получить системное время сервера одним нажатием кнопки. Я также могу получить системное время клиента при запуске блестящего приложения (с использованием Java), но я не могу получить системное время клиента для каждого клика. Тем не менее, я получаю то, что кажется NA при первом клике, а затем время предыдущего клика. Есть мысли?

(Пример ниже основан на нажатии кнопки для простоты.)

EDITED (я реализовал Shiny.onInputChange и изменил время разбора)

library(shiny) 
library(shinyjs)

if (interactive()) {
  ui <- shinyUI(
    fluidPage(
      useShinyjs(),
      verbatimTextOutput("clientTime"),
      verbatimTextOutput("serverTime"),
      HTML('<input type="text" id="client_time" name="client_time" style="display: none;"> '),
      actionButton("btn1","Click to see times")


  ))

  server <- function(input, output){


    # this block fires each time we receive a message from JavaScript
    output$text <- renderText({

      req(input$count)

      paste("you clicked", input$count, "times on the RStudio ball")
    })



    observeEvent(input$btn1,
                 {
                     shinyjs::runjs(
                       '
                       $(function() {
                         var time_now = new Date();
                         Shiny.onInputChange("client_time", time_now)
                       });
                       ')
                   times <- as.POSIXct(
                     input$client_time,
                     format = "%Y-%m-%dT%H:%M:%OS")
                   times <- paste("Client Time:", format(times, "%Y-%m-%d %H:%M:%OS3"))
                   output$clientTime <- renderText(times)

                   servertimes <- Sys.time()
                   servertimes <- paste("Server Time:", format(servertimes, "%Y-%m-%d %H:%M:%OS3"))
                   output$serverTime <- renderText(servertimes)
                 })
  }
  shinyApp(ui = ui, server = server) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...