0

У меня есть родное приложение на Java и расширение Chrome. Обратный путь к моему заявлению таков:Callback in Native Messaging

  1. JavaScript инициирует звонок в приложение для родных.
  2. Собственное приложение считывает поток и выполняет некоторые вычисления.
  3. Родное приложение должно вызвать функцию JS и нуждается в ее результатах для дальнейших вычислений.
  4. Если собственное приложение вызывает JS (отправив сообщение через расширение), что произойдет?

Я знаю, что я вызываю вызов обратного вызова JS позже, когда вызов завершен, но как я могу ждать здесь на стороне Java, чтобы вернуть результат? Раньше у меня был апплет и использовался для использования объекта FutureTask, но вы думаете, что здесь также можно создать FutureTask?

спасибо.

+0

Просто добавьте код, мы можем найти любые ошибки или дальнейшие шаги. Используя веб-драйвер Selenium, это возможно. – Sai

ответ

0

Когда вашему процессу требуется более одного сообщения от JS к родному приложению (и обратно), простым решением является включение запроса транзакции и идентификатора транзакции, чтобы обеспечить непрерывность различных задач. Итак, ваше родное приложение в Java не будет «ждать» для второго сообщения конкретно, но будет ждать сообщения. Он просто сможет определить, является ли полученное сообщение продолжением предыдущего сообщения или если оно новое.

Например

  1. От JS в родное приложение, сообщение JSON может быть что-то вроде:

    { "TRANSACTION_ID": "123", "запрос": "give_me_your_name"}

  2. ответ
  3. родное приложение к JS:

    { "TRANSACTION_ID": "123", "ответ": "джон"}

  4. JS последовательный запрос на родное приложение:

    { "TRANSACTION_ID": "123", "запрос": "do_something"}

  5. ответ

    родное приложение к JS:

    { "TRANSACTION_ID" : «123», «ответ»: «оК»}

Ваш JS и код Собственное приложение нужно будет действовать в соответствии с запросами и ответами для данного TRANSACTION_ID.