
110
5
章 ストリーム
.pipe(zlib.createGzip())
.pipe(crypto.createCipher('aes192', 'a_shared_secret'))
.pipe(req)
.on('finish', () => console.log('File succesfully sent'));
同様にサーバ側にも復号の処理を挿入しましょう。
const crypto = require('crypto');
// ...
const server = http.createServer((req, res) => {
// ...
req
.pipe(crypto.createDecipher('aes192', 'a_shared_secret'))
.pipe(zlib.creategunzip())
.pipe(fs.createwritestream(
filename))
.on('finish', () => { /* ... */ });
});
暗号化と復号の処理をとても簡単に追加できました。既存のストリームを再利用することで、まるで
LEGO
のブロックを組み立てるかのように複数のストリームを合成できるのです。
ストリームを使えばモジュール性の高い簡潔なコードが記述できるため、純粋な
I/O
の処理に使わ
れるだけではなく、コードを単純化しモジュラー化する手段としても使われます。
5.2
ストリームの基本的な使い方
前の節でストリームが強力であることを示