Chrome本机消息传递-启动另一个应用程序时断开连接

时间:2019-09-30 10:37:29

标签: google-chrome chrome-native-messaging

我要做什么?

我试图基于这样的模式编写应用程序:

  1. chrome扩展程序在我的计算机上启动一个应用程序(.jar文件)
  2. 该应用程序启动另一个应用程序(外部的,不是我写的),我正在向其传递数据,它为用户显示窗口,用户向其中输入一些数据,然后该应用程序将数据返回给父应用程序< / li>
  3. 父应用处理子应用响应,并将其发送回chrome扩展

怎么了?

显示子应用程序的窗口时,Chrome扩展程序已断开连接(它完全同时发生)。接下来,结果不会返回到chrome扩展程序。

有效的方法

  1. 如果我省略点号。 2(只是模拟子应用的答案),结果将返回给chrome扩展程序。
  2. 包括所有要点:子应用正确返回其结果。父级应用程序将其捕获并尝试将其返回给chrome扩展程序(未成功,扩展程序已断开连接)

也尝试过

我尝试使用java多线程(ExecutorCompletionService,Callable,Future)来实现这一点,我想在单独的线程中启动子应用程序并阻塞主线程,直到子进程完成为止,这没有帮助。

1 个答案:

答案 0 :(得分:0)

解决了!

chrome扩展程序与我的应用之间的通信是通过标准输入/输出进行的。在我的应用程序代码(用Java编写)中的某个地方调用了System.out.println。它在STDOUT上造成了一些混乱,并使应用程序与扩展程序断开连接。就像我看到的那样,它是在启动外部应用程序的同时发生的,可能不是完全在同一时间发生的,而是在之前/之后的某个时间,人们看不到的东西。

多线程处理与此问题无关。

解决方案

我发现并删除了所有写入标准输出的代码