Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ socket.io-stream Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ Ρ Π΄Π²ΡΠΌΡ ΡΠ·Π»Π°ΠΌΠΈ.
Π‘Π΅ΡΠ²Π΅Ρ A: (ΠΡΠΏΡΠ°Π²ΠΈΡΡ ΡΠ°ΠΉΠ»)
```
var clientIO = require('socket.io-client');
var ss = require('socket.io-stream');
var clientSocket= clientIO( http://ServerB_Address
);
clientSocket.on('ΠΎΡΠΈΠ±ΠΊΠ°', (ΠΎΡΠΈΠ±ΠΊΠ°) => {
console.log(ΠΎΡΠΈΠ±ΠΊΠ°);
});
var stream = ss.createStream({objectMode: true});
ss(clientSocket).emit('ΠΎΡΠΏΡΠ°Π²ΠΈΡΡ-ΡΠ°ΠΉΠ»', ΠΏΠΎΡΠΎΠΊ, Π΄Π°Π½Π½ΡΠ΅);
Π²Π°Ρ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π±Π°ΠΉΡΡ = 0;
Π²Π°Ρ ΠΎΡ = 0;
var reader = fs.createReadStream(filePath, {start: from});
reader.pipe(ΠΏΠΎΡΠΎΠΊ)
.on('ΠΎΡΠΈΠ±ΠΊΠ°', (ΠΎΡΠΈΠ±ΠΊΠ°) => {
console.log(ΠΎΡΠΈΠ±ΠΊΠ°);
})
.on('Π΄Π°Π½Π½ΡΠ΅', (ΡΠ°Π½ΠΊ) => {
uploadedBytes += Buffer.byteLength(chunk);
});
Server B: (Receive File)
```
var fs = require('fs');
var io = require('socket.io')(http);
var ss = require('socket.io-stream');
io.on('connection', (socket) => {
// listen to send file
ss(socket).on('send-mail', (stream, data) => {
console.log(`*** Begin receive file`);
var writer = fs.createWriteStream(downloadPath, {flags: 'a'});
stream.pipe(writer);
var size = 0;
stream.on('data', (chunk) => {
size += chunk.length;
console.log(`*** Receive ${size} from mail`);
});
stream.on('end', () => {
console.log(`*** End file`);
});
stream.on('error', (error) => {
console.log(`*** Error when receiving file`);
console.log(error);
});
});
});
ΠΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ, Π½ΠΎ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠ°ΠΉΠ»Π°, Π΅ΡΠ»ΠΈ ΡΠ΅ΡΠ²Π΅Ρ Π²ΡΠΎΡΠΎΠ³ΠΎ ΡΠ·Π»Π° ΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π΄ΡΡΠ³ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ΅ Π°Π²Π°ΡΠΈΠΉΠ½ΠΎ Π·Π°Π²Π΅ΡΡΠ°Π΅Ρ ΡΠ°Π±ΠΎΡΡ, ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½Π½ΠΎΠ΅ ΡΠΎΠ±ΡΡΠΈΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ.
ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΌΠΎΠΆΠ΅Ρ ΠΊΡΠΎ-Π½ΠΈΠ±ΡΠ΄Ρ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΠ½Π΅, ΠΊΠ°ΠΊ Ρ ΠΌΠΎΠ³Ρ ΠΏΠΎΠΉΠΌΠ°ΡΡ ΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ? Π Π΅ΡΡΡ Π»ΠΈ Π»ΡΡΡΠΈΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΡΠ·Π»ΠΎΠ²?
ΠΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π΄Π»Ρ ΡΠΎΠ±ΡΡΠΈΡ "ΠΎΡΠΈΠ±ΠΊΠ°". ΠΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ ΡΠΈΡΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΡΠ»ΡΡΠΈΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ±ΡΡΠΈΠΉ Π΄Π»Ρ ΠΎΡΠΈΠ±ΠΊΠΈ? ΠΠΎΠΆΠ°Π»ΡΠΉΡΡΠ°, ΠΏΡΠΈΠ²Π΅Π΄ΠΈΡΠ΅ ΠΌΠ½Π΅ ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Ρ ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΡ ΠΎΡΠΈΠ±ΠΊΡ Π΄Π»Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠ³ΠΎ ΡΠΎΠΊΠ΅ΡΠ°.
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ socket.io ..., Π²Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΎΡΠΊΡΡΡΡΠ΅ 300+ ΠΎΡΠΊΡΡΡΡΡ
Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠΎΠ² ...
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π±ΡΠ» 6 ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄...
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠΉΡΠ΅ socket.io ..., Π²Ρ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ Π²ΡΠ΅ΠΌΡ Π² Π΄ΠΎΠ»Π³ΠΎΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π΅, ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠΈΡΠ΅ Π½Π° ΠΎΡΠΊΡΡΡΡΠ΅ 300+ ΠΎΡΠΊΡΡΡΡΡ Π²ΠΎΠΏΡΠΎΡΠΎΠ² Π±Π΅Π· ΠΎΡΠ²Π΅ΡΠΎΠ² ...
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΠΈΡ Π±ΡΠ» 6 ΠΌΠ΅ΡΡΡΠ΅Π² Π½Π°Π·Π°Π΄...