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

Controle Remoto com NodeJS e WebSockets

Controle Remoto com NodeJS e WebSockets

Palestra apresentada no EATI 2012 e no W3C Webbr 2012.
A palestra conta um pouco da história do controle remoto e apresenta uma solução desenvolvida com teconologias Web abertas.

Avatar for Jaydson Gomes

Jaydson Gomes

November 08, 2012
Tweet

More Decks by Jaydson Gomes

Other Decks in Programming

Transcript

  1. Jaydson Gomes Entusiasta JavaScript Front­End engineer no Terra Curador do

    BrazilJS Curador do RSJS Fundador da BrazilJS Foundation E...
  2. Eugene J. Polley foi um engenheiro americano conhecido por inventar

    o Flash­Matic, um esboço do controle remoto para televisores
  3. ||

  4. Node.js é uma plataforma construída com o V8 para criar

    aplicações rápidas e escaláveis. Node.js usa um modelo baseado em eventos, e I/O não bloqueante que permite que sejam criadas aplicações leves e eficientes, além de ser perfeito para sistemas com um volume grande da dados em real­ time.
  5. WebSockets é uma tecnologia avançada que torna possível abrir uma

    sessão de comunicação interativa entre o browser e o servidor. Com essa API, tu pode enviar mensagens para um servidor e receber respostas baseadas em eventos sem consultar o servidor.
  6. Can I use SVG? Compatibility table for support of SVG

    in desktop and mobile browsers. Legend Green Supported Red Not supported Greenish yellow Partially supported Gray Support unknown Web Sockets ­ Candidate Recommendation Global user stats*: Support: 69.11% Partial support: 0.94% Total: 70.05% IE Firefox Chrome Safari Opera iOS Safari Opera Mini Android Browser Blackberry Browser Opera Mobile Chrome for Android Firefox for Android IE Mobile 3 versions back 8.0: Not supported 27.0: Supported 32.0: Supported 5.1: Partial support 19.0: Supported 4.2­4.3: Partial support 4.0: Not supported 11.5: Partial support 2 versions back 9.0: Not supported 28.0: Supported 33.0: Supported 6.0: Supported 20.0: Supported 5.0­5.1: Partial support 4.1: Not supported 12.0: Partial support Previous version 10.0: Supported 29.0: Supported 34.0: Supported 6.1: Supported 21.0: Supported 6.0­6.1: Supported 4.2­4.3: Not supported 7.0: Supported 12.1: Supported Current 11.0: Supported 30.0: Supported 35.0: Supported 7.0: Supported 22.0: Supported 7.0­7.1: Supported 5.0­7.0: Not supported 4.4: Supported 10.0: Supported 22.0: Supported 35.0: Supported 30.0: Supported 10.0: Supported Near future 31.0: Supported 36.0: Supported 8.0: Supported 23.0: Supported 8.0: Supported 4.4.3: Supported
  7. O objetivo do Socket.IO é tornar possível aplicações realtime em

    todos os browsers e dispositivos móveis, abstraindo as diferenças entre mecanismos de transporte. É realtime 100% em JavaScript, sem preocupações.
  8. A fim de proporcionar conectividade realtime em todos os browsers,

    o Socket.IO seleciona qual o mecanimsmo de transporte disponível e capaz, em tempo de execução, sem afetar a API.
  9. SocketIO Server: v a r a p p = r

    e q u i r e ( ' h t t p ' ) . c r e a t e S e r v e r ( h a n d l e r ) , i o = r e q u i r e ( ' s o c k e t . i o ' ) . l i s t e n ( a p p ) , f s = r e q u i r e ( ' f s ' ) a p p . l i s t e n ( 8 0 ) ; f u n c t i o n h a n d l e r ( r e q , r e s ) { f s . r e a d F i l e ( _ _ d i r n a m e + ' / i n d e x . h t m l ' , f u n c t i o n ( e r r , d a t a ) { i f ( e r r ) { r e s . w r i t e H e a d ( 5 0 0 ) ; r e t u r n r e s . e n d ( ' E r r o r l o a d i n g i n d e x . h t m l ' ) ; } r e s . w r i t e H e a d ( 2 0 0 ) ; r e s . e n d ( d a t a ) ; } ) ; } i o . s o c k e t s . o n ( ' c o n n e c t i o n ' , f u n c t i o n ( s o c k e t ) { s o c k e t . e m i t ( ' n e w s ' , { h e l l o : ' w o r l d ' } ) ; s o c k e t . o n ( ' m y o t h e r e v e n t ' , 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 ) ; } ) ; } ) ;
  10. SocketIO Client: v a r s o c k e

    t = i o . c o n n e c t ( ' h t t p : / / l o c a l h o s t ' ) ; s o c k e t . o n ( ' n e w s ' , 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 ) ; s o c k e t . e m i t ( ' m y o t h e r e v e n t ' , { m y : ' d a t a ' } ) ; } ) ;
  11. v a r r e m o t e =

    n e w R e m o t e C o n t r o l ( ) ; r e m o t e . c o n n e c t ( ' h t t p : / / l o c a l h o s t : 8 1 ' ) ; r e m o t e . o n ( ' n e x t ' , f u n c t i o n ( ) { / / Y o u r m e t h o d t o m o v e t o t h e n e x t s l i d e } ) ; r e m o t e . o n ( ' p r e v i o u s ' , f u n c t i o n ( ) { / / Y o u r m e t h o d t o m o v e t o t h e p r e v i o u s s l i d e } ) ;