我有一个zip文件(15 MB),想发送到android套接字连接,我可以通过以下代码发出:
fs.readFile('path',function(err,fileData){
io.to(socketId).emit('sendFile',{'file':fileData.toString('base64')});
});
使用上面的代码,低大小的文件正在发出没有任何延迟,如果有任何大尺寸文件发出延迟。如何以更好的方式实现这一目标。
答案 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。