Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Intro to Node.JS

Intro to Node.JS

JavaScript CodeLabs - Node.JS Basics
http://eueung.github.io/js-stuff/node-basics

Eueung Mulyana

December 16, 2015
Tweet

More Decks by Eueung Mulyana

Other Decks in Programming

Transcript

  1. S E T n o d e j s V

    e r s i o n = 5 . 2 . 0 S E T n o d e j s A r c h = x 6 4 nodejs-portable (admin) s e t P A T H = % A P P D A T A % \ n p m ; % ~ d p 0 ; % P A T H % s e t P Y T H O N = f : \ p r o g \ p y 2 7 \ p y t h o n . e x e nodevars n p m c o n f i g s e t m s v s _ v e r s i o n 2 0 1 3 - - g l o b a l npm Settings - Example e c h o % P Y T H O N % # f : \ p r o g \ p y 2 7 \ p y t h o n . e x e n p m c o n f i g s e t m s v s _ v e r s i o n 2 0 1 3 - - g l o b a l n p m - v # 3 . 3 . 1 2 4 / 30
  2. Example #1 (http-1) / / a l t e r

    n a t i v e c o n s t h t t p = r e q u i r e ( ' h t t p ' ) ; c o n s t h o s t n a m e = ' 1 2 7 . 0 . 0 . 1 ' ; c o n s t p o r t = 1 3 3 7 ; h t t p . c r e a t e S e r v e r ( ( r e q , r e s ) = > { r e s . w r i t e H e a d ( 2 0 0 , { ' C o n t e n t - T y p e ' : ' t e x t / p l a i n ' } ) ; r e s . e n d ( ' H e l l o W o r l d \ n ' ) ; } ) . l i s t e n ( p o r t , h o s t n a m e , ( ) = > { c o n s o l e . l o g ( ` S e r v e r r u n n i n g a t h t t p : / / $ { h o s t n a m e } : $ { p o r t } } ) ; v a r h t t p = r e q u i r e ( ' h t t p ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q , r e s ) { r e s . w r i t e H e a d ( 2 0 0 , { ' C o n t e n t - T y p e ' : ' t e x t / p l a i n ' } ) ; r e s . e n d ( ' h e l l o w o r l d \ n ' ) ; } ) . l i s t e n ( 8 0 0 0 , ' 1 2 7 . 0 . 0 . 1 ' ) ; c o n s o l e . l o g ( ' S e r v e r r u n n i n g a t h t t p : / / 1 2 7 . 0 . 0 . 1 : 8 0 0 0 / ' ) ; $ > n o d e e x - 0 1 - w e b . j s S e r v e r r u n n i n g a t h t t p : / / 1 2 7 . 0 . 0 . 1 : 8 0 0 0 / $ > c u r l h t t p : / / l o c a l h o s t : 8 0 0 0 h e l l o w o r l d 6 / 30
  3. $ > a b - n 1 0 0 -

    c 1 0 0 h t t p : / / l o c a l h o s t : 8 0 0 0 / $ > a b - n 1 0 0 - c 1 0 0 h t t p : / / 1 2 7 . 0 . 0 . 1 : 8 0 0 0 $ > a b - n 1 0 0 - c 1 0 0 h t t p : / / 1 2 7 . 0 . 0 . 1 : 8 0 0 0 / T h i s i s A p a c h e B e n c h , . . . B e n c h m a r k i n g 1 2 7 . 0 . 0 . 1 ( b e p a t i e n t ) . . . . . d o n e S e r v e r H o s t n a m e : 1 2 7 . 0 . 0 . 1 S e r v e r P o r t : 8 0 0 0 D o c u m e n t P a t h : / C o n c u r r e n c y L e v e l : 1 0 0 T i m e t a k e n f o r t e s t s : 2 . 0 5 9 s e c o n d s C o m p l e t e r e q u e s t s : 1 0 0 R e q u e s t s p e r s e c o n d : 4 8 . 5 6 [ # / s e c ] ( m e a n ) T i m e p e r r e q u e s t : 2 0 5 9 . 2 0 3 [ m s ] ( m e a n ) T i m e p e r r e q u e s t : 2 0 . 5 9 2 [ m s ] ( m e a n , a c r o s s a l l c o n c u r r e n t r e q u e s t s ) T r a n s f e r r a t e : 5 . 3 6 [ K b y t e s / s e c ] r e c e i v e d C o n n e c t i o n T i m e s ( m s ) m i n m e a n [ + / - s d ] m e d i a n m a x C o n n e c t : 0 0 0 . 0 0 0 P r o c e s s i n g : 1 9 9 7 2 0 2 1 8 . 4 2 0 2 8 2 0 2 8 W a i t i n g : 4 7 5 1 8 . 7 4 7 7 8 T o t a l : 1 9 9 7 2 0 2 1 8 . 4 2 0 2 8 2 0 2 8 P e r c e n t a g e o f t h e r e q u e s t s s e r v e d w i t h i n a c e r t a i n t i m e ( m s ) 5 0 % 2 0 2 8 6 6 % 2 0 2 8 . . . 1 0 0 % 2 0 2 8 ( l o n g e s t r e q u e s t ) Example #1 (http-2) v a r h t t p = r e q u i r e ( ' h t t p ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q , r e s ) { r e s . w r i t e H e a d ( 2 0 0 , { ' C o n t e n t - T y p e ' : ' t e x t / p l a i n ' } ) ; r e s . w r i t e ( ' h e l l o \ n ' ) ; s e t T i m e o u t ( f u n c t i o n ( ) { r e s . e n d ( ' w o r l d \ n ' ) ; } , 2 0 0 0 ) ; } ) . l i s t e n ( 8 0 0 0 , ' 1 2 7 . 0 . 0 . 1 ' ) ; 7 / 30
  4. Example #1 (http-3) v a r h t t p

    = r e q u i r e ( ' h t t p ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q u e s t , r e s p o n s e ) { v a r h e a d e r s = r e q u e s t . h e a d e r s ; v a r m e t h o d = r e q u e s t . m e t h o d ; v a r u r l = r e q u e s t . u r l ; v a r b o d y = [ ] ; r e q u e s t . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } ) . o n ( ' d a t a ' , f u n c t i o n ( c h u n k ) { b o d y . p u s h ( c h u n k ) ; } ) . o n ( ' e n d ' , f u n c t i o n ( ) { r e s p o n s e . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r r e s p o n s e . w r i t e H e a d ( 2 0 0 , { ' C o n t e n t - T y p e ' : ' t e x t / h t m l ' r e s p o n s e . e n d ( ' < h t m l > < b o d y > < h 1 > H e l l o , W o r l d ! < / h 1 > < / b o d y } ) ; } ) . l i s t e n ( 8 0 8 0 ) ; 8 / 30
  5. v a r h t t p = r e

    q u i r e ( ' h t t p ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q u e s t , r e s p o n s e ) { v a r h e a d e r s = r e q u e s t . h e a d e r s ; v a r m e t h o d = r e q u e s t . m e t h o d ; v a r u r l = r e q u e s t . u r l ; v a r b o d y = [ ] ; r e q u e s t . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } ) . o n ( ' d a t a ' , f u n c t i o n ( c h u n k ) { b o d y . p u s h ( c h u n k ) ; } ) . o n ( ' e n d ' , f u n c t i o n ( ) { b o d y = B u f f e r . c o n c a t ( b o d y ) . t o S t r i n g ( ) ; r e s p o n s e . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } ) ; r e s p o n s e . s t a t u s C o d e = 2 0 0 ; r e s p o n s e . s e t H e a d e r ( ' C o n t e n t - T y p e ' , ' a p p l i c a t i o n / j s o n ' v a r r e s p o n s e B o d y = { h e a d e r s : h e a d e r s , m e t h o d : m e t h o d , u r l : u r l , b o d y : b o d y } ; r e s p o n s e . w r i t e ( J S O N . s t r i n g i f y ( r e s p o n s e B o d y ) ) ; r e s p o n s e . e n d ( ) ; } ) ; } ) . l i s t e n ( 8 0 8 0 ) ; Example #1 (http-4) 9 / 30
  6. Example #1 (socket-1) v a r n e t =

    r e q u i r e ( ' n e t ' ) ; v a r s e r v e r = n e t . c r e a t e S e r v e r ( f u n c t i o n ( s o c k e t ) { s o c k e t . w r i t e ( ' E c h o S e r v e r \ r \ n ' ) ; s o c k e t . p i p e ( s o c k e t ) ; } ) ; s e r v e r . l i s t e n ( 1 3 3 7 , ' 1 2 7 . 0 . 0 . 1 ' ) ; c o n s o l e . l o g ( ' E c h o S e r v e r r u n n i n g a t p o r t 1 3 3 7 ' ) ; $ > n o d e e x - 0 1 - n e t - e c h o 1 . j s E c h o S e r v e r r u n n i n g a t p o r t 1 3 3 7 10 / 30
  7. Example #1 (socket-2) v a r n e t =

    r e q u i r e ( ' n e t ' ) ; n e t . c r e a t e S e r v e r ( f u n c t i o n ( s o c k e t ) { s o c k e t . w r i t e ( ' h e l l o \ n ' ) ; s o c k e t . w r i t e ( ' w o r l d \ n ' ) ; s o c k e t . o n ( ' d a t a ' , f u n c t i o n ( d a t a ) { s o c k e t . w r i t e ( d a t a . t o S t r i n g ( ) . t o U p p e r C a s e ( ) ) } ) ; } ) . l i s t e n ( 8 0 0 0 ) ; c o n s o l e . l o g ( ' E c h o S e r v e r - 2 r u n n i n g a t p o r t 8 0 0 0 ' ) ; $ > n o d e e x - 0 1 - n e t - e c h o 2 . j s E c h o S e r v e r - 2 r u n n i n g a t p o r t 8 0 0 0 $ > n c a t l o c a l h o s t 8 0 0 0 h e l l o w o r l d i n i d a t a I N I D A T A d a t a l a g i : e c h o s e r v e r 2 D A T A L A G I : E C H O S E R V E R 2 11 / 30
  8. $ > n o d e e x - 0

    1 - n e t - s e r v e r . j s s e r v e r i s l i s t e n i n g c l i e n t c o n n e c t e d c l i e n t d i s c o n n e c t e d v a r n e t = r e q u i r e ( ' n e t ' ) ; v a r s e r v e r = n e t . c r e a t e S e r v e r ( f u n c t i o n ( c o n n e c t i o n ) { c o n s o l e . l o g ( ' c l i e n t c o n n e c t e d ' ) ; c o n n e c t i o n . o n ( ' e n d ' , f u n c t i o n ( ) { c o n s o l e . l o g ( ' c l i e n t d i s c o n n e c t e d ' c o n n e c t i o n . w r i t e ( ' H e l l o W o r l d ! \ r \ n ' ) ; c o n n e c t i o n . p i p e ( c o n n e c t i o n ) ; } ) ; s e r v e r . l i s t e n ( 8 0 8 0 , f u n c t i o n ( ) { c o n s o l e . l o g ( ' s e r v e r i s l i s t e n i n g ' Example #1 (socket-3) $ > n o d e e x - 0 1 - n e t - c l i e n t . j s c o n n e c t e d t o s e r v e r ! H e l l o W o r l d ! d i s c o n n e c t e d f r o m s e r v e r v a r n e t = r e q u i r e ( ' n e t ' ) ; v a r c l i e n t = n e t . c o n n e c t ( { p o r t : 8 0 8 0 } , f u n c t i o n ( ) { c o n s o l e c l i e n t . o n ( ' d a t a ' , f u n c t i o n ( d a t a ) { c o n s o l e . l o g ( d a t a . t o S t r i n g ( ) ) ; c l i e n t . e n d ( ) ; } ) ; c l i e n t . o n ( ' e n d ' , f u n c t i o n ( ) { c o n s o l e . l o g ( ' d i s c o n n e c t e d f r o m s 12 / 30
  9. Example #1 (socket-4) $ > n c a t l

    o c a l h o s t 8 0 0 0 h e l l o w o r l d t e s t d a r i n c a t 1 r o g e r n c a t 1 , i n i d a r i n c a t 2 $ > n c a t l o c a l h o s t 8 0 0 0 h e l l o w o r l d t e s t d a r i n c a t 1 r o g e r n c a t 1 , i n i d a r i n c a t 2 A r r a y . p r o t o t y p e . r e m o v e = f u n c t i o n ( f r o m , t o ) { v a r r e s t = t h i s . s l i c e ( ( t o | | f r o m ) + 1 | | t h i s . l e n g t h ) ; t h i s . l e n g t h = f r o m < 0 ? t h i s . l e n g t h + f r o m : f r o m ; r e t u r n t h i s . p u s h . a p p l y ( t h i s , r e s t ) ; } ; / / A p p l i c a t i o n v a r n e t = r e q u i r e ( ' n e t ' ) ; v a r s o c k e t s = [ ] ; n e t . c r e a t e S e r v e r ( f u n c t i o n ( s o c k e t ) { s o c k e t s . p u s h ( s o c k e t ) ; s o c k e t . w r i t e ( ' h e l l o \ n ' ) ; s o c k e t . w r i t e ( ' w o r l d \ n ' ) ; s o c k e t . o n ( ' d a t a ' , f u n c t i o n ( d a t a ) { v a r i ; f o r ( i = 0 ; i < s o c k e t s . l e n g t h ; i + + ) { i f ( s o c k e t s [ i ] = = = s o c k e t ) c o n t i n u e ; s o c k e t s [ i ] . w r i t e ( d a t a . t o S t r i n g ( ) ) ; } } ) ; s o c k e t . o n ( ' e n d ' , f u n c t i o n ( ) { v a r i = s o c k e t s . i n d e x O f ( s o c k e t ) ; s o c k e t s . r e m o v e ( i ) ; } ) ; } ) . l i s t e n ( 8 0 0 0 ) ; 13 / 30
  10. Example #1 http echo server v a r h t

    t p = r e q u i r e ( ' h t t p ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q u e s t , r e s p o n s e ) { r e q u e s t . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; r e s p o n s e . s t a t u s C o d e = 4 0 0 ; r e s p o n s e . e n d ( ) ; } ) ; r e s p o n s e . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . e r r o r ( e r r ) ; } ) ; i f ( r e q u e s t . m e t h o d = = = ' G E T ' & & r e q u e s t . u r l = = = ' / e c h o ' ) { r e q u e s t . p i p e ( r e s p o n s e ) ; } e l s e { r e s p o n s e . s t a t u s C o d e = 4 0 4 ; r e s p o n s e . e n d ( ) ; } } ) . l i s t e n ( 8 0 8 0 ) ; 14 / 30
  11. Example #2 f s : synchronous vs. asynchronous v a

    r f s = r e q u i r e ( " f s " ) ; v a r d a t a = f s . r e a d F i l e S y n c ( ' e x - 0 2 - i n p u t . t x t ' ) ; c o n s o l e . l o g ( d a t a . t o S t r i n g ( ) ) ; c o n s o l e . l o g ( " P r o g r a m E n d e d " ) ; $ > n o d e e x - 0 2 - f s 1 . j s i n i i n p u t i n i i n p u t i n i i n p u t i n p u t i n i i n p u t i n i i n p u t i n p u t i n p u t P r o g r a m E n d e d v a r f s = r e q u i r e ( " f s " ) ; f s . r e a d F i l e ( ' e x - 0 2 - i n p u t . t x t ' , f u n c t i o n ( e r r , d a t a ) { i f ( e r r ) r e t u r n c o n s o l e . e r r o r ( e r r ) ; c o n s o l e . l o g ( d a t a . t o S t r i n g ( ) ) ; } ) ; c o n s o l e . l o g ( " P r o g r a m E n d e d " ) ; $ > n o d e e x - 0 2 - f s 2 . j s P r o g r a m E n d e d i n i i n p u t i n i i n p u t i n i i n p u t i n p u t i n i i n p u t i n i i n p u t i n p u t i n p u t 15 / 30
  12. Example #3 (events) $ > n o d e e

    x - 0 3 - e v e n t 2 . j s 2 L i s t n e r ( s ) l i s t e n i n g t o c o n n e c t i o n e v e n t l i s t n e r 1 e x e c u t e d . l i s t n e r 2 e x e c u t e d . L i s t n e r 1 w i l l n o t l i s t e n n o w . l i s t n e r 2 e x e c u t e d . 1 L i s t n e r ( s ) l i s t e n i n g t o c o n n e c t i o n e v e n t P r o g r a m E n d e d . v a r e v e n t s = r e q u i r e ( ' e v e n t s ' ) ; v a r e v e n t E m i t t e r = n e w e v e n t s . E v e n t E m i t t e r ( ) ; / / - - - - - v a r c o n n e c t H a n d l e r = f u n c t i o n c o n n e c t e d ( ) { c o n s o l e . l o g ( ' c o n n e c t i o n s u c c e s f u l . ' ) ; e v e n t E m i t t e r . e m i t ( ' d a t a _ r e c e i v e d ' ) ; } / / - - - - - e v e n t E m i t t e r . o n ( ' c o n n e c t i o n ' , c o n n e c t H a n d l e r ) ; e v e n t E m i t t e r . o n ( ' d a t a _ r e c e i v e d ' , f u n c t i o n ( ) { c o n s o l e . l o g ( ' d a t a r e c e i v e d s u c c e s f u l l y . ' / / - - - - - e v e n t E m i t t e r . e m i t ( ' c o n n e c t i o n ' ) ; c o n s o l e . l o g ( " P r o g r a m E n d e d . " ) ; $ > n o d e e x - 0 3 - e v e n t 1 . j s c o n n e c t i o n s u c c e s f u l . d a t a r e c e i v e d s u c c e s f u l l y . P r o g r a m E n d e d . v a r e v e n t s = r e q u i r e ( ' e v e n t s ' ) ; v a r e v e n t E m i t t e r = n e w e v e n t s . E v e n t E m i t t e r ( ) ; / / - - - - - - - - - - - v a r l i s t n e r 1 = f u n c t i o n l i s t n e r 1 ( ) { c o n s o l e . l o g ( ' l i s t n e r 1 e x e v a r l i s t n e r 2 = f u n c t i o n l i s t n e r 2 ( ) { c o n s o l e . l o g ( ' l i s t n e r 2 e x e / / - - - - - - - - - - - e v e n t E m i t t e r . a d d L i s t e n e r ( ' c o n n e c t i o n ' , l i s t n e r 1 ) ; e v e n t E m i t t e r . o n ( ' c o n n e c t i o n ' , l i s t n e r 2 ) ; / / - - - - - - - - - - - v a r e v e n t L i s t e n e r s = r e q u i r e ( ' e v e n t s ' ) . E v e n t E m i t t e r . l i s t e n e r C o c o n s o l e . l o g ( e v e n t L i s t e n e r s + " L i s t n e r ( s ) l i s t e n i n g t o c o n n e c t e v e n t E m i t t e r . e m i t ( ' c o n n e c t i o n ' ) ; / / - - - - - - - - - - - e v e n t E m i t t e r . r e m o v e L i s t e n e r ( ' c o n n e c t i o n ' , l i s t n e r 1 ) ; c o n s o l e . l o g ( " L i s t n e r 1 w i l l n o t l i s t e n n o w . " ) ; e v e n t E m i t t e r . e m i t ( ' c o n n e c t i o n ' ) ; e v e n t L i s t e n e r s = r e q u i r e ( ' e v e n t s ' ) . E v e n t E m i t t e r . l i s t e n e r C o u n t ( c o n s o l e . l o g ( e v e n t L i s t e n e r s + " L i s t n e r ( s ) l i s t e n i n g t o c o n n e c t / / - - - - - - - - - - - c o n s o l e . l o g ( " P r o g r a m E n d e d . " ) ; 16 / 30
  13. Example #4 http server & client $ > n o

    d e e x - 0 4 - s e r v e r . j s S e r v e r r u n n i n g a t h t t p : / / 1 2 7 . 0 . 0 . 1 : 7 0 7 0 / R e q u e s t f o r / e x - 0 4 - i n d e x . h t m l r e c e i v e d . server.js v a r h t t p = r e q u i r e ( ' h t t p ' ) ; v a r f s = r e q u i r e ( ' f s ' ) ; v a r u r l = r e q u i r e ( ' u r l ' ) ; h t t p . c r e a t e S e r v e r ( f u n c t i o n ( r e q u e s t , r e s p o n s e ) { v a r p a t h n a m e = u r l . p a r s e ( r e q u e s t . u r l ) . p a t h n a m e ; c o n s o l e . l o g ( " R e q u e s t f o r " + p a t h n a m e + " r e c e i v e d . " ) ; f s . r e a d F i l e ( p a t h n a m e . s u b s t r ( 1 ) , f u n c t i o n ( e r r , d a t a ) { i f ( e r r ) { c o n s o l e . l o g ( e r r ) ; r e s p o n s e . w r i t e H e a d ( 4 0 4 , { ' C o n t e n t - T y p e ' : ' t e x t / h t m l ' } e l s e { r e s p o n s e . w r i t e H e a d ( 2 0 0 , { ' C o n t e n t - T y p e ' : ' t e x t / h t m l ' r e s p o n s e . w r i t e ( d a t a . t o S t r i n g ( ) ) ; } r e s p o n s e . e n d ( ) ; } ) ; } ) . l i s t e n ( 7 0 7 0 ) ; c o n s o l e . l o g ( ' S e r v e r r u n n i n g a t h t t p : / / 1 2 7 . 0 . 0 . 1 : 7 0 7 0 / ' ) ; 17 / 30
  14. v a r h t t p = r e

    q u i r e ( ' h t t p ' ) ; v a r o p t i o n s = { h o s t : ' l o c a l h o s t ' , p o r t : ' 7 0 7 0 ' , p a t h : ' / e x - 0 4 - i n d e x . h t m l ' } ; v a r c a l l b a c k = f u n c t i o n ( r e s p o n s e ) { v a r b o d y = ' ' ; r e s p o n s e . o n ( ' d a t a ' , f u n c t i o n ( d a t a ) { b o d y + = d a t a ; } ) ; r e s p o n s e . o n ( ' e n d ' , f u n c t i o n ( ) { c o n s o l e . l o g ( b o d y ) ; } ) ; } v a r r e q = h t t p . r e q u e s t ( o p t i o n s , c a l l b a c k ) ; r e q . e n d ( ) ; Example #4 http server & client $ > n o d e e x - 0 4 - c l i e n t . j s < h t m l > < h e a d > < t i t l e > S a m p l e P a g e < / t i t l e > < / h e a d > < b o d y > < h 1 > H e l l o W o r l d ! < / h 1 > < / b o d y > < / h t m l > 18 / 30
  15. Example #5 (Stream) $ > n o d e e

    x - 0 5 - r w s t r e a m 1 . j s P r o g r a m E n d e d i n i i n p u t i n i i n p u t i n i i n p u t i n p u t i n i i n p u t i n i i n p u t i n p u t i n p u t v a r f s = r e q u i r e ( " f s " ) ; v a r d a t a = ' ' ; v a r r e a d e r S t r e a m = f s . c r e a t e R e a d S t r e a m ( ' e x - 0 5 - i n p u t . t x t ' ) ; r e a d e r S t r e a m . s e t E n c o d i n g ( ' U T F 8 ' ) ; / / - - - - - - - - r e a d e r S t r e a m . o n ( ' d a t a ' , f u n c t i o n ( c h u n k ) { d a t a + = c h u n k ; } ) ; r e a d e r S t r e a m . o n ( ' e n d ' , f u n c t i o n ( ) { c o n s o l e . l o g ( d a t a ) ; } ) ; r e a d e r S t r e a m . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . l o g ( e r r . s t a c k ) ; } ) ; / / - - - - - - - - c o n s o l e . l o g ( " P r o g r a m E n d e d " ) ; $ > n o d e e x - 0 5 - r w s t r e a m 2 . j s P r o g r a m E n d e d W r i t e c o m p l e t e d . v a r f s = r e q u i r e ( " f s " ) ; v a r d a t a = ' d a t a i n p u t d a t a i n p u t d a t a ' ; v a r w r i t e r S t r e a m = f s . c r e a t e W r i t e S t r e a m ( ' e x - 0 5 - o u t p u t . t x t ' ) ; w r i t e r S t r e a m . w r i t e ( d a t a , ' U T F 8 ' ) ; w r i t e r S t r e a m . e n d ( ) ; / / - - - - - - - - - - - - w r i t e r S t r e a m . o n ( ' f i n i s h ' , f u n c t i o n ( ) { c o n s o l e . l o g ( " W r i t e c o m p w r i t e r S t r e a m . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . l o g ( e r r . s t a c k ) / / - - - - - - - - - - - - c o n s o l e . l o g ( " P r o g r a m E n d e d " ) ; 19 / 30
  16. Example #5 v a r f s = r e

    q u i r e ( " f s " ) ; v a r r e a d e r S t r e a m = f s . c r e a t e R e a d S t r e a m ( ' e x - 0 5 - i n p u t . t x t ' ) ; v a r w r i t e r S t r e a m = f s . c r e a t e W r i t e S t r e a m ( ' e x - 0 5 - o u t p u t - 2 . t x t ' r e a d e r S t r e a m . p i p e ( w r i t e r S t r e a m ) ; c o n s o l e . l o g ( " P r o g r a m E n d e d " ) ; v a r f s = r e q u i r e ( " f s " ) ; v a r z l i b = r e q u i r e ( ' z l i b ' ) ; / / - - - - - - - - - - - - - - - - f s . c r e a t e R e a d S t r e a m ( ' e x - 0 5 - i n p u t . t x t ' ) . p i p e ( z l i b . c r e a t e G z i p ( ) ) . p i p e ( f s . c r e a t e W r i t e S t r e a m ( ' e x - 0 5 - i n p u t . t x t . g z ' ) ) ; c o n s o l e . l o g ( " F i l e C o m p r e s s e d . " ) ; / / - - - - - - - - - - - - - - - - / / n e e d s y n c ( c a l l b a c k a f t e r w r i t e g z ) f s . c r e a t e R e a d S t r e a m ( ' e x - 0 5 - i n p u t . t x t . g z ' ) . p i p e ( z l i b . c r e a t e G u n z i p ( ) ) . p i p e ( f s . c r e a t e W r i t e S t r e a m ( ' e x - 0 5 - i n p u t - r e c o v e r e d . t x t ' ) ) ; c o n s o l e . l o g ( " F i l e D e c o m p r e s s e d . " ) ; 20 / 30
  17. $ > n o d e e x - 0

    6 . j s e n d i a n n e s s : L E t y p e : W i n d o w s _ N T p l a t f o r m : w i n 3 2 t o t a l m e m o r y : 6 0 9 7 1 4 1 7 6 0 b y t e s . f r e e m e m o r y : 3 5 2 9 2 6 9 2 4 8 b y t e s . v a r o s = r e q u i r e ( " o s " ) ; c o n s o l e . l o g ( ' e n d i a n n e s s : ' + o s . e n d i a n n e s s ( ) ) ; c o n s o l e . l o g ( ' t y p e : ' + o s . t y p e ( ) ) ; c o n s o l e . l o g ( ' p l a t f o r m : ' + o s . p l a t f o r m ( ) ) ; c o n s o l e . l o g ( ' t o t a l m e m o r y : ' + o s . t o t a l m e m ( ) + " b y t e s . " ) ; c o n s o l e . l o g ( ' f r e e m e m o r y : ' + o s . f r e e m e m ( ) + " b y t e s . " ) ; Example #6 (os) 21 / 30
  18. Example #7 (path) $ > n o d e e

    x - 0 7 . j s n o r m a l i z a t i o n : \ t e s t \ t e s t 1 \ 2 s l a s h e s \ 1 s l a s h j o i n t p a t h : \ t e s t \ t e s t 1 \ 2 s l a s h e s \ 1 s l a s h r e s o l v e : H : \ n o d e j s - 5 . 2 . 0 \ w o r k \ b a s i c s \ e x - 0 6 . j s e x t n a m e : . j s v a r p a t h = r e q u i r e ( " p a t h " ) ; c o n s o l e . l o g ( ' n o r m a l i z a t i o n : ' + p a t h . n o r m a l i z e ( ' / t e s t / t e s t 1 / / c o n s o l e . l o g ( ' j o i n t p a t h : ' + p a t h . j o i n ( ' / t e s t ' , ' t e s t 1 ' , ' 2 s l c o n s o l e . l o g ( ' r e s o l v e : ' + p a t h . r e s o l v e ( ' e x - 0 6 . j s ' ) ) ; c o n s o l e . l o g ( ' e x t n a m e : ' + p a t h . e x t n a m e ( ' e x - 0 6 . j s ' ) ) ; 22 / 30
  19. v a r d n s = r e q

    u i r e ( ' d n s ' ) ; d n s . l o o k u p ( ' w w w . g o o g l e . c o m ' , f u n c t i o n o n L o o k u p ( e r r , a d d r e s s , f a m i l y ) c o n s o l e . l o g ( ' a d d r e s s : ' , a d d r e s s ) ; d n s . r e v e r s e ( a d d r e s s , f u n c t i o n ( e r r , h o s t n a m e s ) { i f ( e r r ) { c o n s o l e . l o g ( e r r . s t a c k ) ; } c o n s o l e . l o g ( ' r e v e r s e f o r ' + a d d r e s s + ' : ' + J S O N . s t r i n g i f y ( h o s t n a m e s ) ) ; } ) ; } ) ; $ > n o d e e x - 0 8 . j s a d d r e s s : 1 1 1 . 9 4 . 2 4 8 . 5 9 r e v e r s e f o r 1 1 1 . 9 4 . 2 4 8 . 5 9 : [ " f m - d y n - 1 1 1 - 9 4 - 2 4 8 - 5 9 . f a s t . n e t . i d " Example #8 (dns) 23 / 30
  20. Example #9 (domain) $ > n o d e e

    x - 0 9 . j s l i s t e n e r h a n d l e d t h i s e r r o r ( T o b e h a n d l e d b y l i s t e n e r ) d o m a i n 1 h a n d l e d t h i s e r r o r ( T o b e h a n d l e d b y d o m a i n 1 ) d o m a i n 2 h a n d l e d t h i s e r r o r ( T o b e h a n d l e d b y d o m a i n 2 ) v a r E v e n t E m i t t e r = r e q u i r e ( " e v e n t s " ) . E v e n t E m i t t e r ; v a r d o m a i n = r e q u i r e ( " d o m a i n " ) ; v a r e m i t t e r 1 = n e w E v e n t E m i t t e r ( ) ; v a r d o m a i n 1 = d o m a i n . c r e a t e ( ) ; / / - - - - - - - - - - - - - - u s e l i s t e n e r d o m a i n 1 . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . l o g ( " d o m a i n 1 h a n d l e d o m a i n 1 . a d d ( e m i t t e r 1 ) ; e m i t t e r 1 . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . l o g ( " l i s t e n e r h a n d l e m i t t e r 1 . e m i t ( ' e r r o r ' , n e w E r r o r ( ' T o b e h a n d l e d b y l i s t e n e r ' ) ) ; / / - - - - - - - - - - - - - - r e m o v e l i s t e n e r e m i t t e r 1 . r e m o v e A l l L i s t e n e r s ( ' e r r o r ' ) ; e m i t t e r 1 . e m i t ( ' e r r o r ' , n e w E r r o r ( ' T o b e h a n d l e d b y d o m a i n 1 ' ) ) ; / / - - - - - - - - - - - - - - u n c a u g h t / / d o m a i n 1 . r e m o v e ( e m i t t e r 1 ) ; / / e m i t t e r 1 . e m i t ( ' e r r o r ' , n e w E r r o r ( ' C o n v e r t e d t o e x c e p t i o n . S / / - - - - - - - - - - - - - - / / - - - - - - - - - - - - - - v a r d o m a i n 2 = d o m a i n . c r e a t e ( ) ; d o m a i n 2 . o n ( ' e r r o r ' , f u n c t i o n ( e r r ) { c o n s o l e . l o g ( " d o m a i n 2 h a n d l e d o m a i n 2 . r u n ( f u n c t i o n ( ) { v a r e m i t t e r 2 = n e w E v e n t E m i t t e r ( ) ; e m i t t e r 2 . e m i t ( ' e r r o r ' , n e w E r r o r ( ' T o b e h a n d l e d b y d o m a i n 2 ' } ) ; 24 / 30
  21. c o n s o l e . l o

    g ( _ _ f i l e n a m e ) ; c o n s o l e . l o g ( _ _ d i r n a m e ) ; / / - - - - - - - - - - - - f u n c t i o n p r i n t H e l l o ( ) { c o n s o l e . l o g ( " H e l l o , W o r l d ! " ) ; } s e t T i m e o u t ( p r i n t H e l l o , 2 0 0 0 ) ; / / c a l l a f t e r 2 s e c o n d s / / s e t I n t e r v a l ( p r i n t H e l l o , 2 0 0 0 ) ; / / r e p e a t v a r t = s e t T i m e o u t ( p r i n t H e l l o , 2 0 0 0 ) ; c l e a r T i m e o u t ( t ) ; / / s t o p t h e t i m e r , n o t e x e c u t e d / / - - - - - - - - - - - - c o n s o l e . i n f o ( " P r o g r a m S t a r t e d " ) ; v a r c o u n t e r = 1 0 ; c o n s o l e . l o g ( " C o u n t e r : % d " , c o u n t e r ) ; c o n s o l e . t i m e ( " G e t t i n g d a t a " ) ; / / D o s o m e p r o c e s s i n g h e r e . . . c o n s o l e . t i m e E n d ( ' G e t t i n g d a t a ' ) ; c o n s o l e . i n f o ( " P r o g r a m E n d e d " ) $ > n o d e e x - 1 0 - m i s c 1 . j s H : \ n o d e j s - 5 . 2 . 0 \ w o r k \ b a s i c s \ e x - 1 0 - m i s c 1 . j s H : \ n o d e j s - 5 . 2 . 0 \ w o r k \ b a s i c s P r o g r a m S t a r t e d C o u n t e r : 1 0 G e t t i n g d a t a : 0 . 6 2 6 m s P r o g r a m E n d e d H e l l o , W o r l d ! Example #10 (misc) 25 / 30
  22. Example #10 (misc) $ > n o d e e

    x - 1 0 - m i s c 2 . j s P r o g r a m S t a r t e d H e l l o W o r l d ! 0 : H : \ n o d e j s - 5 . 2 . 0 \ n o d e . e x e 1 : H : \ n o d e j s - 5 . 2 . 0 \ w o r k \ b a s i c s \ e x - 1 0 - m i s c 2 . j s H : \ n o d e j s - 5 . 2 . 0 \ n o d e . e x e w i n 3 2 C u r r e n t d i r e c t o r y : H : \ n o d e j s - 5 . 2 . 0 \ w o r k \ b a s i c s C u r r e n t v e r s i o n : v 5 . 2 . 0 { r s s : 1 7 3 7 1 1 3 6 , h e a p T o t a l : 7 5 2 4 0 9 6 , h e a p U s e d : 4 0 5 0 0 7 2 } A b o u t t o e x i t w i t h c o d e : 0 p r o c e s s . o n ( ' e x i t ' , f u n c t i o n ( c o d e ) { / / F o l l o w i n g c o d e w i l l n e v e r e x e c u t e . s e t T i m e o u t ( f u n c t i o n ( ) { c o n s o l e . l o g ( " T h i s w i l l n o t r u n " ) ; } , c o n s o l e . l o g ( ' A b o u t t o e x i t w i t h c o d e : ' , c o d e ) ; } ) ; c o n s o l e . l o g ( " P r o g r a m S t a r t e d " ) ; / / - - - - - - - - - - - - p r o c e s s . s t d o u t . w r i t e ( " H e l l o W o r l d ! " + " \ n " ) ; / / R e a d i n g p a s s e d p a r a m e t e r p r o c e s s . a r g v . f o r E a c h ( f u n c t i o n ( v a l , i n d e x , a r r a y ) { c o n s o l e . l o g / / - - - - - - - - - - - - c o n s o l e . l o g ( p r o c e s s . e x e c P a t h ) ; c o n s o l e . l o g ( p r o c e s s . p l a t f o r m ) ; c o n s o l e . l o g ( ' C u r r e n t d i r e c t o r y : ' + p r o c e s s . c w d ( ) ) ; c o n s o l e . l o g ( ' C u r r e n t v e r s i o n : ' + p r o c e s s . v e r s i o n ) ; c o n s o l e . l o g ( p r o c e s s . m e m o r y U s a g e ( ) ) ; 26 / 30
  23. b u f = n e w B u f

    f e r ( 2 5 6 ) ; l e n = b u f . w r i t e ( " S i m p l y E a s y L e a r n i n g " ) ; c o n s o l e . l o g ( " O c t e t s w r i t t e n : " + l e n ) ; / / - - - - - - - - - - - - - - - b u f = n e w B u f f e r ( 2 6 ) ; f o r ( v a r i = 0 ; i < 2 6 ; i + + ) { b u f [ i ] = i + 9 7 ; } c o n s o l e . l o g ( b u f . t o S t r i n g ( ' a s c i i ' ) ) ; / / o u t p u t s : a b c d e f g h i j k l m n o p q r s t u v w x y z c o n s o l e . l o g ( b u f . t o S t r i n g ( ' a s c i i ' , 0 , 5 ) ) ; / / o u t p u t s : a b c d e c o n s o l e . l o g ( b u f . t o S t r i n g ( ' u t f 8 ' , 0 , 5 ) ) ; / / o u t p u t s : a b c d e c o n s o l e . l o g ( b u f . t o S t r i n g ( u n d e f i n e d , 0 , 5 ) ) ; / / e n c o d i n g d e f a u l t s t o ' u t f 8 ' , o u t p u t s a b c d e / / - - - - - - - - - - - - - - - v a r b u f = n e w B u f f e r ( ' S i m p l y E a s y L e a r n i n g ' ) ; v a r j s o n = b u f . t o J S O N ( b u f ) ; c o n s o l e . l o g ( j s o n ) ; $ > n o d e e x - 1 1 - b u f 1 . j s O c t e t s w r i t t e n : 2 0 a b c d e f g h i j k l m n o p q r s t u v w x y z a b c d e a b c d e a b c d e { t y p e : ' B u f f e r ' , d a t a : [ 8 3 , 1 0 5 , 1 0 9 , 1 1 2 , 1 0 8 , 1 2 1 , 3 2 , 6 9 , 9 7 , 1 1 5 , 1 2 1 , 3 2 , Example #11 (Buffer) 27 / 30
  24. Example #11 (Buffer) $ > n o d e e

    x - 1 1 - b u f 2 . j s b u f f e r 3 c o n t e n t : T u t o r i a l s P o i n t S i m p l y E a s y L e a r n i n g A B C c o m e s b e f o r e A B C D b u f f e r 2 c o n t e n t : A B C b u f f e r 2 c o n t e n t : T u t o r i a l s b u f f e r l e n g t h : 1 4 v a r b u f f e r 1 = n e w B u f f e r ( ' T u t o r i a l s P o i n t ' ) ; v a r b u f f e r 2 = n e w B u f f e r ( ' S i m p l y E a s y L e a r n i n g ' ) ; v a r b u f f e r 3 = B u f f e r . c o n c a t ( [ b u f f e r 1 , b u f f e r 2 ] ) ; c o n s o l e . l o g ( " b u f f e r 3 c o n t e n t : " + b u f f e r 3 . t o S t r i n g ( ) ) ; / / - - - - - - - - - - - - - - - v a r b u f f e r 1 = n e w B u f f e r ( ' A B C ' ) ; v a r b u f f e r 2 = n e w B u f f e r ( ' A B C D ' ) ; v a r r e s u l t = b u f f e r 1 . c o m p a r e ( b u f f e r 2 ) ; i f ( r e s u l t < 0 ) { c o n s o l e . l o g ( b u f f e r 1 + " c o m e s b e f o r e " + b u f f e e l s e i f ( r e s u l t = = 0 ) { c o n s o l e . l o g ( b u f f e r 1 + " i s s a m e a s " + b u e l s e { c o n s o l e . l o g ( b u f f e r 1 + " c o m e s a f t e r " + b u f f e r 2 ) ; } / / - - - - - - - - - - - - - - - v a r b u f f e r 1 = n e w B u f f e r ( ' A B C ' ) ; v a r b u f f e r 2 = n e w B u f f e r ( 3 ) ; b u f f e r 1 . c o p y ( b u f f e r 2 ) ; / / c o p y a b u f f e r c o n s o l e . l o g ( " b u f f e r 2 c o n t e n t : " + b u f f e r 2 . t o S t r i n g ( ) ) ; / / - - - - - - - - - - - - - - - v a r b u f f e r 1 = n e w B u f f e r ( ' T u t o r i a l s P o i n t ' ) ; v a r b u f f e r 2 = b u f f e r 1 . s l i c e ( 0 , 9 ) ; / / s l i c i n g a b u f f e r c o n s o l e . l o g ( " b u f f e r 2 c o n t e n t : " + b u f f e r 2 . t o S t r i n g ( ) ) ; / / - - - - - - - - - - - - - - - v a r b u f f e r = n e w B u f f e r ( ' T u t o r i a l s P o i n t ' ) ; c o n s o l e . l o g ( " b u f f e r l e n g t h : " + b u f f e r . l e n g t h ) ; / / l e n g t h o f t h 28 / 30
  25. References 1. Guides | Node.js 2. Node.js Tutorial - TutorialsPoint

    3. Simple Servers | Node.js | Bevry's Learning Centre 29 / 30