Я хочу передать файл с помощью node.js с помощью socket.io (socket.io-client) и доставки.Передача файла зависает (но без ошибок) между сервером node.js и клиентом socket.io
Я пытался сделать это на стороне сервера:
//// server.js
var socket = require('socket.io').listen(5000);
var dl = require('delivery');
var fs = require('fs');
socket.on('connect', function() {
log("Sockets connected");
delivery = dl.listen(socket);
delivery.connect();
delivery.on('delivery.connect',function(delivery){
delivery.send({
name: 'file1.zip',
path : './file1.zip'
});
delivery.on('send.success',function(file){
console.log('File sent successfully!');
});
});
});
И это на стороне клиента:
//// client.js
var io = require('socket.io-client');
var dl = require('delivery');
var fs = require('fs');
var socket = io.connect('http://localhost:5000');
socket.on('connection', function(socket){
var delivery = dl.listen(socket);
delivery.on('receive.success',function(file){
fs.writeFile(file.name, file.buffer, function(err) {
if(err) {
console.log('File could not be saved: ' + err);
} else {
console.log('File ' + file.name + " saved");
};
});
});
});
Об исполнении, нет никакой ошибки, но он висит. стороны сервера:
$ node server.js
info - socket.io started
debug - client authorized
info - handshake authorized Bbzo928wAyTjDX8v06Ic
debug - setting request GET /socket.io/1/websocket/Bbzo928wAyTjDX8v06Ic
debug - set heartbeat interval for client Bbzo928wAyTjDX8v06Ic
debug - client authorized for
debug - websocket writing 1::
debug - emitting heartbeat for client Bbzo928wAyTjDX8v06Ic
debug - websocket writing 2::
debug - set heartbeat timeout for client Bbzo928wAyTjDX8v06Ic
debug - got heartbeat packet
debug - cleared heartbeat timeout for client Bbzo928wAyTjDX8v06Ic
debug - set heartbeat interval for client Bbzo928wAyTjDX8v06Ic
А на стороне клиента нет выхода:
$ node client.js
ли кто-нибудь знает, что идет не так?
Я не уверен, что вы можете просто отправить двоичный файл через такой сокет, и почему вы используете node.js и синтаксис на стороне клиента? – adeneo
@adeneo клиент не браузер, а другое приложение Node, и [модуль доставки] (https://npmjs.org/package/delivery) используется – robertklep
@robertklep - это объясняет это, я как-то понял столько же, но просто сказано «клиентская сторона». Никогда не использовал этот модуль, просто использовал [binary.js] (http://binaryjs.com/) для отправки таких файлов. – adeneo