某些Windows模块因node-webkit而被破坏,例如。 win32ole,所以我使用"代理"。在nw.exe的开头,脚本在带有node.exe的脚本上使用child_process.fork,并运行到nw.exe的末尾。
proxy = childprocess.fork('proxy.js', [], {execPath: __dirname+path.sep+'node.exe', silent: true});
一切都很好,但fork使用send(message)和on(' message')完全异步。 但是我需要一个带有返回值的同步调用,例如:
var response = proxy.sendsync(<json or string>); // returns string or json
或者在node-webkit和子处理节点之间是否存在IPC(无网络)的其他方式?
编辑:一个简单的例子(没有真正的代码,只有这个想法) win32ole在node-webkit
中不起作用var archivename = oleproxy({type: 'get', name: 'ArchiveName'});
var config = loadconfig(archivename.result());
if (oleproxy({type: 'func', name: 'PrepareObj', paras: [config.maskid, config.rootobjid, 'caption']}).result() == 0) {
oleproxy({type: 'set', name: 'ObjName', value: 'test'});
...
oleproxy({type: 'set', name: 'ObjACL', value: '7a7'});
var maskfieldcount = oleproxy({type: 'get', name: 'MaskFieldCount'}).result();
for (var i=0; i<maskfieldcount; i++) {
...
}
...
oleproxy({type: 'func', name: 'SaveObj', paras: []});
}
函数<json> = oleproxy(<json>)
是nw.exe端的包装函数。它将json发送到子进程(node.exe中的脚本)。子进程进行实际的OLE调用并获取调用结果。现在发回结果,但不是通过事件。主要过程仍在等待结果。