如何使用套接字发送大文件?

时间:2016-11-02 14:45:36

标签: node.js express socket.io

我有一个zip文件(15 MB),想发送到android套接字连接,我可以通过以下代码发出:

fs.readFile('path',function(err,fileData){
io.to(socketId).emit('sendFile',{'file':fileData.toString('base64')});
});

使用上面的代码,低大小的文件正在发出没有任何延迟,如果有任何大尺寸文件发出延迟。如何以更好的方式实现这一目标。

1 个答案:

答案 0 :(得分:3)

您可以尝试使用socket.io-stream,如下例所示:

服务器:

2

客户端:

'use strict';
const io = require('socket.io')(3000);
const ss = require('socket.io-stream');
const fs = require('fs');

var filename = 'test.zip';   // 80MB file

io.on('connection', function (socket) {
  console.log('client connected');
  socket.on('sendmeafile', function () {
    var stream = ss.createStream();
    stream.on('end', function () {
        console.log('file sent');
    });
    ss(socket).emit('sending', stream); 
    fs.createReadStream(filename).pipe(stream);
  });  
});

console.log('Plain socket.io server started at port 3000');

正如jfriend00在评论中写道,你不需要http。