domingo, 11 de dezembro de 2011

Codeigniter + node.js + now.js + express


Aplicações Híbridas - Php + node.JS

Usualmente uma prática comum é integrar aplicações php, ruby e etc com aplicações node.JS, aproveitando assim as facilidades das bibliotecas do Node na construção de aplicações real-time e utilização de websocket.

Vamos modificar a feature de upload da aplicação utilizando o node.JS para possibilitar que os navegadores sejam notificados pelo servidor a cada nova imagem redimensionada, sem a necessidade de uma nova requisição ao servidor para saber se o trabalho já foi realizado.
Assim a aplicação php vai usar o serviço node para transmitir a mensagem aos clientes inscritos em determinados canais.

fonte: http://www.lifeyun.com


Instalar o Node.js no ubuntu
Node.js, framework serve-side javascript que utiliza o motor V8 do Chrome e que facilita muito escalar aplicações web principalmente usado em funcionalidades real-time onde é necessário comunicação assíncrona e suporte a um grande número de requisições.

$ sudo apt-get install g++ curl libssl-dev apache2-utils
$ sudo apt-get install git-core
$ git clone https://github.com/joyent/node.git
$ cd node
$ ./configure
$ make
$ sudo make install
$ node --version


Instalar o gerenciador de pacotes NPM
O npm (http://npmjs.org) é o gerenciador de pacotes padrão do node. Facilita o gerenciamento de módulos e depêncencias do projeto.  Existem diversos módulos prontos para auxiliar no desenvolvimentos de apps node que podem ser consultados no wiki do projeto em https://github.com/joyent/node/wiki/modules

$ curl http://npmjs.org/install.sh | sudo sh 

Instalar o Now.js
O NowJS (http://nowjs.com/) é um framework que encapsula as funcionalidades do socket.io e sobe o nível, facilitando e deixando mais transparente a construção de aplicações pub/sub.  Você pode fazer seus clientes facilmente invocar funções do servidor ou seu servidor chamar funções dos clientes conectados. Facilita também agrupar clientes em um ou multiplos grupos.
$ mkdir codeigniter-aceademic/application/servers
$ sudo npm install now

Instalar o plugin Jquery.Notify

Um plugin jQueryUI para criar um widget de notificação como o Growl do Mac ou o Ubuntu Notification do Ubuntu. Vai servir para apresentar as mensagens que estão sendo transmitidas via websocket do servidor para os clientes. Mais informações sobre a instalação ver o site do plugin em http://www.erichynds.com/jquery/a-jquery-ui-growl-ubuntu-notification-widget



Copiar os arquivos do plugin para
assets/js/libs/jquery.notify.min.js
assets/js/libs/jquery-ui-1.8.16.custom.min.js
assets/css/libs/ui.notify.css
assets/css/libs/jquery-ui-1.8.16.custom.css

Incluir os scrips no arquivo application/core/MY_Controller.php


Refatorar as views para usar o Jquery.Notify

Criar uma partial em application/views/layout/_notify.php para encapsular os templates que o plugin notify utiliza para apresentar as mensagens na aplicação.


Referenciar a partial no template global da aplicação application/view/layout/application.php



Javascript client

Criar o script assets/js/application.js para inscrever (subscribe) a aplicação em dois canais distintos e ficar escutando qualquer mensagem enviado pelo servidor. Um canal recebe mensagens quando o worker terminar de redimensionar a imagem e outro que recebe mensagens gerais sobre o sistema.



Biblioteca rest-client
Para acessar o servidor node vamos utilizar uma biblioteca REST para o codeigniter que faclita as chamadas e manipulação dos métodos httpd necessários para se comunicar com os serviços públicos da api da aplicação node que será construida utilizando o módulo Express. Mais informações sobre a instalação podem ser acessadas no site https://github.com/philsturgeon/codeigniter-restclient
$ php tools/spark install -v2.0.0 restclient


Referências
http://howtonode.org/how-to-module
http://www.adityaravishankar.com/2011/10/nowjs-node-js-tutorial-creating-multi-room-chat-server/
http://vowsjs.org/#installing
http://www.lifeyun.com/node-js-building-for-scalability-with-server-side-javascript.html
http://www.vivaolinux.com.br/artigo/Node.js-para-administradores-de-sistema

Nenhum comentário:

Postar um comentário