Chrome关闭时Chrome本地消息未关闭。

10
我已经为我的扩展程序和进程创建了Chrome主机,用于在它们之间传递本地消息。我的进程会在 Chrome 启动时启动,但当我关闭 Chrome 时不会关闭进程。我应该向主机的清单文件添加参数,还是应该添加处理程序来在关闭 Chrome 时关闭进程?谢谢。

你使用的是哪种编程语言?能否发一些代码? - bkdc
2个回答

7
您没有提供太多细节,但我可以回答您的一些问题: - 不需要向清单中添加“参数”; 没有这样的参数 - 不需要从您的进程中检测Chrome何时关闭
当您向Chrome发送消息或者使用长时间连接时,Chrome将启动您的本地消息处理程序。 STDIN流关闭时应用程序应该关闭(简单来说,您无法再从stdin读取)。
对于单线程应用程序,流程如下: 1. 从stdin读取请求 2. 处理请求 3. 将响应写入stdout; 如同您能从stdin读取一样重复执行步骤1-3; 如果无法从stdin读取,则打破循环并退出。
    std::string req;
while(!(req=read_request()).empty())
{
       //process request and send response
}

read_request 需要你自己来实现:请求的前4个字节包含消息长度,所以先读取这4个字节,然后读取长度为len的字节数组,其中包含了实际的JSON请求。如果无法读取任何内容(为空),则 while 循环将会中断并退出应用程序。


太好了。谢谢bkdc。 - cjones26

0

bkdc的回答基础上继续探讨;

如果您正在使用C库函数- getchar(),那么这应该可以解决问题;

unsigned int c = getchar();
if (c == 0xFFFFFFFF){//this means native app finished its work
        return 0;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接