【问题标题】:Node js stream file节点js流文件
【发布时间】:2013-07-18 00:30:59
【问题描述】:

我有一项服务通过套接字持续发送数据。

一段时间后捕获的数据如下所示:

{base64} \n {base64} \n {base64} ...

其中{base64}代表图像数据。

如何控制数据流,以便一次获得一张图像(以正确的顺序)并用它做一些有用的事情。

现在我只是将它通过管道传输到一个文件中,但我确信有比开始解析文件的分隔符并自己实际实现背压机制更好的方法。

var streamRaw = fs.createWriteStream('raw.data');
socket.pipe(streamRaw, {end:false});

【问题讨论】:

    标签: node.js stream


    【解决方案1】:

    我会参考substack's example here:

    var offset = 0;
    
    socket.on('readable', function () {
        var buf = socket.read();
        if (!buf) return;
        for (; offset < buf.length; offset++) {
            if (buf[offset] === 0x0a) {
                //you have buffered a full image as a base64 string,
                // process it, or emit it as an event
                processImageData(buf.slice(0, offset).toString());
                buf = buf.slice(offset + 1);
                offset = 0;
                socket.unshift(buf);
                return;
            }
        }
        socket.unshift(buf);
    });
    

    您也可以将流视为一个转换流,它读取套接字的数据块并在它们到达时发出整套 base64 图像数据。

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-27
      • 1970-01-01
      • 2016-08-19
      • 2018-05-22
      • 2014-06-28
      相关资源
      最近更新 更多