Tuesday, June 3, 2014

Berkenalan dan belajar Pipe di Nodejs

Pipe yang kita mungkin ketahui adalah pipa / saluran air mungkin bisa diartikan sama dengan itu biar mudah dipahami 
pipe didalam Node digunakan untuk mentransfer data yang bentuknya bisa stream buffer atau type data lainya namun didalam penulisan 
implementasinya ada beberapa aturan yang harus diikuti.

Biasanya method listener yang terdapat di beberapa api nodejs sudah secara default dipasang misalnya pada filesystem "createReadStream" 
kita bisa langsung menggunakan pipe didalamnya untuk berkomunikasi dengan filesystem "createWriteStream", kali ini kita akan mempelajari 
bagaimana tehnik ini dapat bekerja.

Sebelumnya Pipe ini terbagi menjadi 4 type, yang pertama adalah Readable, Writable, Duplex dan Transform.
Semuanya memiliki properti yang satu sama lainya saling membagi dan menerima data yaitu read dan write, adapun didalam method write 
ada 3 argument didalamnya, yang akan saya contohkan pada contoh script nanti.
tapi sebelumnya kita membutuhkan apinya node yang namanya "util" untuk meng Extends fungsi didalamnya dan dikirim menjadi 
method atau sebaliknya.

Berikut contoh kodenya: eg: [ buat file js dengan nama run.js ]

//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
var stream =  require('stream');
var util = require('util');


util.inherits(Human, stream.Readable);
function Human(){
stream.Readable.call(this);
this.stop = null;
this.jagoan = [ "Spiderman", "Hulk" ];
this.anakJagoan = "Anaknya ";
this._writeAppend= function(){
for(var i in this.jagoan){
this.push( this.anakJagoan + this.jagoan[i] );
}
}
this._read= function(){
this._writeAppend();
for(var i in this.jagoan){
this.push( this.jagoan[i] );
}
this.push( this.stop );
}
}

util.inherits(Quetion, stream.Writable);
function Quetion(){
stream.Writable.call(this);
this.que = [ " Nama Kamu siapa ? ", " Nama Saya " ];
this.index = 0;
this._write= function( chunk, enc, next ){
var context = chunk.toString() + ': ' + (this.que[ this.index % 2 ]) + ( (this.index % 2)?chunk.toString():'' );
console.log( context );
this.index++;
next();
}

}

new Human().pipe( new Quetion() );
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////


Penjelasan kode diatas,

Pertama kita membutuhkan 2 api sebagai contoh yaitu stream dan util
Stream ini fungsinya untuk membuffer Object / Function 

" var stream =  require('stream'); "

didalam stream ada 4 method yang akan kita gunakan yaitu: Readable, Writable, Duplex dan Transform.
tapi contoh diatas hanya Readable dan Writable saja.

" var util = require('util'); " => " util.inherits(Human, stream.Readable); " dan " util.inherits(Human, stream.Readable); "

Kemudian util yang fungsinya untuk membungkus kedua Object tersebut [ Function dan Stream Type ] dengan method util sendiri yaitu "inherit" 
atau penurunan sifat dari object stream tersebut.

" stream.Readable.call(this); " dan " stream.Writable.call(this); "

didalam masing masing Object / Function kita imlementasikan dulu pemanggilan fungsi objectnya sendiri ( this ) yaitu fungsi 
standard javascript "call" kedalam stream Readable maupun Writable

" new Human().pipe( new Quetion() ); "

Terakhir buat object baru dimasing masing fungsinya dan lakukan tehnik pipe dari Readable kedalam object Writable tadi
untuk mencobanya buka console ketikan "node run.js" didalam folder projectnya.


salam


Description: Berkenalan dan belajar Pipe di Nodejs Rating: 4.5 Reviewer: ukungzulfah - ItemReviewed: Berkenalan dan belajar Pipe di Nodejs Posted by: Get Answer
Get Answer, Updated at: 1:25 PM