mid*_*n k 4 node.js express socket.io
我有一个 zip 文件(15 mb),想将其发送到 android 套接字连接,我可以通过以下代码发出:
fs.readFile('path',function(err,fileData){
io.to(socketId).emit('sendFile',{'file':fileData.toString('base64')});
});
Run Code Online (Sandbox Code Playgroud)
使用上面的代码,小文件发送没有任何延迟,如果有任何大文件发送被延迟。如何以更好的方式实现这一目标。
小智 8
您可以尝试使用socket.io-stream,如下例所示:
服务器:
'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');
Run Code Online (Sandbox Code Playgroud)
客户:
'use strict';
const socket = require('socket.io-client')('http://localhost:3000');
const ss = require('socket.io-stream');
const fs = require('fs');
var filename = 'test-copy.zip';
socket.on('connect', function () {
console.log('connected');
socket.emit('sendmeafile');
});
ss(socket).on('sending', function(stream) {
stream.pipe(fs.createWriteStream(filename));
stream.on('end', function () {
console.log('file received');
});
});
Run Code Online (Sandbox Code Playgroud)
正如 jfriend00 在他的评论中所写,您不需要 http。
归档时间: |
|
查看次数: |
6709 次 |
最近记录: |