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

Realtime - Usando o MeteorJS

Duke
October 15, 2013

Realtime - Usando o MeteorJS

Aprensentação no WeWebConf2013 sobre meteor.js

Duke

October 15, 2013
Tweet

More Decks by Duke

Other Decks in Programming

Transcript

  1. Realtime Usando o Meteor para criar aplicações reativas Olá! Notas,

    como está, irá ajudar a entender melhor a aprensentação
  2. The real-time web is a set of technologies and practices

    that enable users to receive information as soon as it is published by its authors, rather than requiring that they or their software check a source periodically for updates. — Wikipedia
  3. HTTP :( Um dos primeiros problemas que se encontra para

    construir esse tipo de aplicação para web, HTTP. Transportar dados em tempo real com HTTP é um saco. Baixa latência, unidirecional, fazer coisas como ajax polling.
  4. v a r c o n n e c t

    i o n = n e w W e b S o c k e t ( ' w s : / / e x a m p l e . o r g : 1 2 3 4 5 / m y a p p ' ) ; c o n n e c t i o n . o n m e s s a g e = f u n c t i o n ( e ) { v a r s e r v e r _ m e s s a g e = e . d a t a ; c o n s o l e . l o g ( s e r v e r _ m e s s a g e ) ; } v a r m e s s a g e = { ' n a m e ' : ' D u k e ' , ' c o m m e n t ' : ' I a m a t W e W e b C o n f ' } ; c o n n e c t i o n . s e n d ( J S O N . s t r i n g i f y ( m e s s a g e ) ) ; A API do WebSockets pura não é muito produtiva
  5. meteor.js * Pure JavaScript. * Live page updates. * Clean,

    powerful data synchronization. * Latency compensation. * Hot Code Pushes. * Sensitive code runs in a privileged environment. * Fully self-contained application bundles. * Interoperability. * Smart Packages.
  6. $ m e t e o r c r e

    a t e r a d i o & & c d r a d i o $ m e t e o r Alguns comandos e sua app está começada
  7. i f ( M e t e o r .

    i s C l i e n t ) { T e m p l a t e . h e l l o . g r e e t i n g = f u n c t i o n ( ) { r e t u r n " W e l c o m e t o r a d i o . " ; } ; } i f ( M e t e o r . i s S e r v e r ) { M e t e o r . s t a r t u p ( f u n c t i o n ( ) { / / c o d e t o r u n o n s e r v e r a t s t a r t u p } ) ; } Código base que o meteor cria, isClient apenas no browser o codigo é executado, isServer apenas no servidor
  8. l i b / # S e m p r

    e s e r á c a r r e g a d o p r i m e i r o c l i e n t / # C a r r e g a d o a p e n a s n o c l i e n t c l i e n t / l i b / # S e m p r e s e r á c a r r e g a d o p r i m e i r o s e r v e r / # C a r r e g a d o a p e n a s n o s e r v e r s e r v e r / l i b / # S e m p r e s e r á c a r r e g a d o p r i m e i r o n o s e r v e r t e s t s / # N ã o s ã o c a r r e g a d o s docs.meteor.com/#structuringyourapp Criar uma aplicação em um arquivo só não é muito bom, o meteor tem uma forma de ler as pasta, você pode criar sua estrutura
  9. S t a t i o n s = n

    e w M e t e o r . C o l l e c t i o n ( " s t a t i o n s " ) ; / / s e r v e r M e t e o r . p u b l i s h ( " p u b l i c _ s t a t i o n s " , f u n c t i o n ( ) { " u s e s t r i c t " ; r e t u r n S t a t i o n s . f i n d ( { p u b l i c : t r u e } ) ; } ) ; / / c l i e n t M e t e o r . s u b s c r i b e ( ' p u b l i c _ s t a t i o n s ' ) ; T e m p l a t e . i n d e x . p u b l i c _ s t a t i o n s = f u n c t i o n ( ) { r e t u r n S t a t i o n s . f i n d ( ) . f e t c h ( ) ; } ; Criando canais, quem estiver subrescrito num determinado canal, recebe apenas dados que foi especificado nele
  10. - - > { " j s o n r

    p c " : " 2 . 0 " , " m e t h o d " : " s u b t r a c t " , " p a r a m s " : { " s u b t r a h e n d " : 2 3 , " m i n u e n d " < - - { " j s o n r p c " : " 2 . 0 " , " r e s u l t " : 1 9 , " i d " : 3 } - - > { " j s o n r p c " : " 2 . 0 " , " m e t h o d " : " s u b t r a c t " , " p a r a m s " : { " m i n u e n d " : 4 2 , " s u b t r a h e n d " < - - { " j s o n r p c " : " 2 . 0 " , " r e s u l t " : 1 9 , " i d " : 4 } Apenas um exemplo do JSON-RPC, o Meteor usa RPC para comunicação client <=> server
  11. M e t e o r . m e t

    h o d s ( { c r e a t e S t a t i o n : f u n c t i o n ( o p t i o n s ) { " u s e s t r i c t " ; v a r s t a t i o n = { o w n e r : t h i s . u s e r I d , t i t l e : o p t i o n s . t i t l e , d e s c r i p t i o n : o p t i o n s . d e s c r i p t i o n } ; r e t u r n S t a t i o n s . i n s e r t ( s t a t i o n ) ; } } ) ;
  12. M e t e o r . c a l

    l ( ' c r e a t e S t a t i o n ' , { t i t l e : " D u k e ' s S t a t i o n " , d e s c r i p t i o n : " L o r e m " } ) ;
  13. packages $ m e t e o r l i

    s t Meteor trabalha com pacotes, para ver os pacotes pré- intalados, rode esse comando
  14. Obrigado! [email protected] Minhas considerações: Ainda não conheço nenhum case grande

    usando meteor. Suporte a SOMENTE MongoDB como banco de dados não é legal. Não utiliza o npm para servir os pacotes