Pular para o conteúdo principal

Push Server and Juggernaut

 

Server push consiste em um servidor poder se comunicar com o cliente em tempo real sem que o navegador tenha que ficar pedindo atualizações. Uma combinação de técnicas cliente/servidor da Web, onde o servidor transfere os dados para o cliente, mas a conexão de dados permanece aberta.

Juggernaut

O Juggernaut é um plugin para Ruby on Rails que implementa o conceito de server push.
Atenção: O Juggernaut usa conexão socket para trasmitir a mensagem, e para isso funcionar, ele usa um arquivo .swf (flash na versão 8) nos navegadores dos clientes que fica ouvindo determinada porta, esperando por mensagens. Ou seja o usuário deverá ter o plugin flash instalado em seu navegador.

Como acontece

  1. Cliente A abre uma conexão socket com o servidor socket
  2. Cliente B faz uma chamada Ajax para o Rails
  3. Rails envia a mensagem para o servidor socket
  4. O servidor socket retorna a mensagem para os clientes.

Implantando o processo

1 - Após a  instalação é necessário criar o arquivo juggernaut_hosts.yml em config no projeto indicando a configuração do servidor de aplicativo do juggernaut:

  1. :hosts:
  2.   - :port: 5001
  3.     :host: #ip
  4.     :environment: :development


  5.   - :port: 5001
  6.     :host: #ip
  7.     :environment: :production


2 - Acrescentar os arquivos javascript do Juggernaut (em layout/padrao.rhtml):


  1. <%= javascript_include_tag :juggernaut %>

3 - Após, é instânciado com o código do usuário:

  1. <%= juggernaut( :client_id => session[:UsrConectado].cdg_usuario ) %>

4 - Criando o arquivo para o servidor juggernaut
  1. juggernaut -g juggernaut.yml

5 - Subindo o serviço:
  1. juggernaut -c juggernaut.yml

6 - Enviando comando javascript:
  1. #Broadcast:
  2. Juggernaut.send_to_all("alert('hi from juggernaut')")
  3. #Usuario especifico:
  4. Juggernaut.send_to_client( "alert('hi from juggernaut')", 29 )

Comentários

Postagens mais visitadas deste blog

Números Primos + MMC + MDC + Ruby

Segue abaixo um exemplo de implementação de gerador de Números Primos + MMC ( Mínimo Múltiplo Comum ) + MDC ( Máximo Divisor Comum ) em ruby. É um resultado de uma prova de lógica que um amigo meu teve que fazer em java. Colaborações prestimosas de Cirillo Ferreira. require 'Mathn' class Numeric def multiplos(ate = 500) (1..ate).to_a.map{|v| self*v} end def divisores(ate = 500) (1..ate).to_a.map{|v| v if (self%v == 0)}.compact end end module Math def self.mmc(*valor) compara( valor.inject([]){|h, i| h << i.multiplos} ).first end def self.mdc(*valor) compara( valor.inject([]){|h, i| h << i.divisores } ).last end def self.nmr_primos numeros_primos = [] (2..501).each{|i| numeros_primos << (2..i).detect{|j| j%j ==0 && i%j==0} } numeros_primos.uniq! end private def self.compara(arr) arr.inject(arr[0]){|ac, i| ac & i} end end Math::mmc(3,5,8) => 120 Math::mmc(3,5,8,9) => 360 Os métodos mmc e mdc são métodos que aceitam parâmetros indetermi

Naturalismo (1870-1900)

Naturalismo é uma escola literaria, vertente do realismo também definido como o realismo extremo. Procura explicar cientificamente (com negação do sentimento e da metafísica) a conduta e o modo de ser dos seres por meio dos fatores externos e da natureza biológica e sociológica. "Os seres são como produtos, como consequência de forças preexistente que limitam a sua responsabilidade e os tornam, nos casos extremos, verdadeiros joguetes das condições. [...] o efeito das taras, das doenças, dos vícios, na formação/desvio do caráter juntando-lhes os efeitos complementares da formação familiar, da educação, do nível cultural." Antonio Candido e José Aderaldo Castello "O Romantismo era a apoteose do sentimento; - o Realismo é a anatomia do caráter. É a crítica do homem. É a arte que nos pinta a nossos próprios olhos - para condenar o que houve de mau na nossa sociedade." Eça de Queirós Teorias: Zoomofismo Determinismo do meio Evolucionismo Eugenia Naturalismo

Rails3 + Ruby1.9 + Dalli (memcache-client)

Após a revolução  cientifico-tecnológico, vivemos agora a terceira revolução industrial, a revolução feita a partir da informação. Dai a importância dos computadores, do meio técnico (a infraestrutura), e por conseguinte - e reservando suas proporções, a ferramenta mencached -- Gem memcache-client não implementa Rails3 app mais. É necessário, agora, usar a poética gem: Dalli . Caso sua aplicação use muita sessão (como a minha). Com certeza terá um problema com a nova gem do memcached. O serializer do Dalli é o Marshal. (Você pode alterar para o qual você quiser: yajl-ruby , ...).  Loading .... Leia também: bashar3a (in English) Revolução Técnico-ciêntifico-informacional Prof. Milton Santos Salvador Dali Surrealismo