主进程与子进程之间能够传递对象么?
Closed this issue · 6 comments
您好,我想在主进程和子进程之间传递对象(不是JSON,socket对象),这可以实现么?在网上找了好久的资料也没结果。
hi, 你具体要做什么?
linux下可以通过共享内存(shared memory)来传递对象, 但是nodejs原生api是没有这个功能的, 你需要找npm module
建议是传递类似JSON这样的"字符串"
是这样的,我在一个服务里声明了一个对象,想要把他设成hub_shared,以便其他服务调用。但是由于这个服务需要每20ms调用一次,所以放在主进程里会导致其他服务卡住,所以我想把它放在子进程里。因此我是想知道怎么样同时满足这两个条件,及是全局对象,又能放在子进程里。
抱歉, 之前忘记回复了. 是否可以这样: hub_shared存下子进程对象child, 然后不同的service和child进行进程间通信. 通信的方式就看你的具体实现了
明白了!谢谢您。顺便想问一下怎么通过nodejs的http模块发送post请求给php后台,并让php接收呢?
我node 的代码是这么写的
function postToPHP (data) {
var http = require('http');
var options = {
host : 'localhost',
port : 80,
path : 'phptest/demo.php',
method : 'POST',
headers : {
'Content-Type' : 'application/json',
'Content-Length' : Buffer.byteLength(data)
}
};
var buffer = "";
var reqPost = http.request(options, function(res) {
console.log("statusCode: ", res.statusCode);
res.on('data', function(d) {
console.info('POST Result:\n');
//process.stdout.write(d);
buffer = buffer+data;
console.info('\n\nPOST completed');
});
res.on('end', function() {
console.log(buffer);
});
});
console.log("before write: "+data);
reqPost.write(data);
reqPost.end();
};
var data = {d:"sss"};
postToPHP(JSON.stringify(data));
首先,你的代码有些地方是有些问题的,options里面的path你可以看看是不是对的,是否应该是/phptest/demo.php 其次buffer = buffer+data; 是否应该是buffer = buffer+d;最后post数据这样直接发 很可能你php那边无法识别 具体看你的做法了。
其次,可以使用第三方库,像request(https://www.npmjs.com/package/request) 这些库封装好了接口 使用起来会很方便。
我们最近发布的新版本里面有加http这一个组件 你也可以更新一下试试哦