我试图在nodejs服务器和red pitaya卡之间进行通信。 客户端连接到Web服务器,使用表单选择一些设置,然后发送给发送回大量数字的红色火龙果。
然后,Web服务器将它们写入可下载的文件中。 它随机工作。
这是服务器:
var settings = require('./settings_model');
var fs = require('fs');
var net = require('net');
var msg = [];
module.exports = function(app) {
net.createServer(function (socket) {
socket.on('data', function (data) {
/* test console */
var msg = JSON.stringify(data);
console.log("data received :" + msg);
tab = new Array();
for(i = 0; i < nbPix; i++){
tab[i] = new Array();
fs.appendFile('./public/img.txt', '\n');
for(var j=0 ; j < len; j++){
tab[i][j]= data[i+(j*nbPix)];
if(!isNaN(tab[i][j])){
fs.appendFile('./public/img.txt', tab[i][j]+ " ");
};
};
};
});
app.post('/api/sendSettings', function(req, res) {
// creation of the file
fs.writeFile("./public/img.txt", "", function(err){
if(err){console.log(err)};
console.log("the file was saved");
});
// here we send settings to the red pitaya
socket.write(input);
res.end();
});
}).listen(9000);
};
对于微小的价值观,有时它是有效的。我可以看到日志:
收到的数据:{&#34; type&#34;:&#34; Buffer&#34;,&#34; data&#34;:[1,1,.... 2]}
但是,对于相同的值,它可以被划分并且破坏我的2d数组
数据接收:{&#34;输入&#34;:&#34;缓冲&#34;,&#34;数据&#34;:[1,1,...... 1]}
数据接收:{&#34;输入&#34;:&#34;缓冲&#34;,&#34;数据&#34;:[2,2,...... 2]}
如果收到的数据太大,系统会崩溃:
错误:EMFILE:打开的文件太多,打开&#39; ./ public / img.txt&#39;
有没有办法设置接收的流大小?我想我需要所有数据来构建我的2D阵列。
对于EMFILE错误,我尝试更改&#34;打开文件&#34;等设置。尺寸。还是行不通。它不应该试图打开多个文件??
我是这类项目的新手,所以如果你能给我提示或文档链接,请立即接受!