当前位置 : 主页 > 网页制作 > Nodejs >

node.js – 处理来自process.stdout’data’事件的分块响应

来源:互联网 收集:自由互联 发布时间:2021-06-16
我有一些我似乎无法修复的代码.它看起来如下: var childProcess = require('child_process');var spawn = childProcess.spawn;child = spawn('./simulator',[]);child.stdout.on('data', function(data){ console.log(data); }); 这都是
我有一些我似乎无法修复的代码.它看起来如下:

var childProcess = require('child_process');
var spawn = childProcess.spawn;
child = spawn('./simulator',[]);

child.stdout.on('data',
    function(data){
        console.log(data);
    }
);

这都是我运行特定类型模拟的Web应用程序的后端.模拟器可执行程序是运行循环等待传递数据的ac程序(通过其标准输入)当输入进入模拟(即从客户端)时,我解析输入,然后将数据写入子进程stdin如下:

child.stdin.write(INPUTS);

现在回来的数据是40,000字节给或拿.但是数据似乎被分成了8192个字节的块.我已经尝试修复c程序的标准输出缓冲区,但它没有解决它.我想知道node.js强加的’data’事件的大小是否有限制?我需要它作为一个块回来.

缓冲区块大小应用于节点.你在节点之外做的任何事都不能解决问题.如果没有在消息传递协议中做一些额外的工作,就无法从节点获得您想要的内容.任何大于块大小的消息都将被分块.有两种方法可以解决此问题.

>如果在开始流出C之前知道总输出大小,则将消息长度预先添加到数据中,以便节点进程知道在终止整个消息之前要提取多少块.>确定可以附加到从C程序发送的消息的特殊字符.当节点看到该字符时,您将结束该消息的输入.

网友评论