通过Socket.IO

时间:2015-08-13 20:17:42

标签: javascript android node.js express socket.io

我正在尝试将许多图像(超过20个)从Socket.IO服务器发送到Android客户端,但是当运行服务器时我在控制台上收到此消息时似乎内存不足:

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - process out of memory

我将每个图像的缓冲区推送到JSON数组并通过Socket.IO发出(在Node / Express和Async的帮助下):

io.on('connection', function (socket) {
    var buffers = {
        imgs: []
    };
    console.log('user connected');
    fs.readdir(process.cwd() + '/pics', function(err, files) {
        if (err) throw err;
        async.each(files, function(file, callback) {
            fs.readFile(process.cwd() + '/pics/' + file, function(err, buf) {
                if (err) {
                    callback(err);
                } else {
                    buffers.imgs.push({
                        "buffer" : buf.toString('base64')
                    });
                    callback();
                }
            });
        }, function(err) {
            if (err) {
                console.log(err);
            } else {
                console.log('successfully finished');
                socket.emit('image', buffers);
            }
        });
    });
});

Android通过适用于Java的Socket.IO客户端收到它:https://github.com/nkzawa/socket.io-client.java

如何在不出现内存不足错误的情况下发送这些图像缓冲区?我可以通过Socket.IO发送这些图像吗?我很抱歉,如果这段代码中存在根本性错误,我仍然是初学程序员。

0 个答案:

没有答案