SlideShare une entreprise Scribd logo
1  sur  6
Télécharger pour lire hors ligne
NODE.JS + SOCKET.IO
AngularJS
Author: Douglas Lira
douglas.lira.web@gmail.com
Neste tutorial não pretendo detalhar as tecnologias envolvidas, tentarei explicar o
mais breve possível sobre cada um deles e por a mão na massa. Estou estudando há um
bom tempo e confesso que estou bastante empolgado com a união desses três
monstrinhos que em breve ira compor o motorzinho do Cylcus –
http://cyclus.myrabrasil.com.br.
O que é AngularJS?
AngularJS é um framewok criado e mantido pelos desenvolvedores do Google.
Diferentemente de outros frameworks JavaScript ele funciona como uma espécie de
extensão da linguagem HTML.
O que é NODE.JS?
É uma plataforma construída sobre o motor Javascript do Google Chrome para
facilmente construir aplicações de rede rápidas e escaláveis. Node.JS usa um modelo de
I/O direcionada a evento não bloqueante que o torna leve e eficiente, ideal para
aplicações em tempo real com troca intensa de dados através de dispositivos
distribuídos.
O que é SOCKET.IO?
Uma API de JavaScript simples, baseada em eventos que te permite comunicar
entre o servidor e o cliente sem esforço e em tempo real.
1 – A idéia
A ideia é mostrar como o Socket.IO funciona, então iremos criar três grupos (A, B
e C). Ao acessar nossa página o usuário poderá escolher qual grupo ele pretende
participar e interagir recebendo e enviando mensagens do grupo, porem só podera
receber e enviar mensagens do grupo que o mesmo participa.
2 – Ferramentas
– Node.JS – http://nodejs.org/
– AngularJS - http://www.angularjs.org/
– Socket.IO - http://socket.io/
Obs.: Estou presumindo que você já tenha instalado o node.js e saiba executar os
scripts =)
3 – Estrutura dos Arquivos
index.html
<!DOCTYPE html>
<html ng-app="App">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NODE.JS + SOCKET.IO - Douglas Lira</title>
<!-- JS -->
<script type="text/javascript" src="js/lib/jquery-1.10.2.min.js"></script>
<script type="text/javascript" src="js/lib/angular.min.js"></script>
<script type="text/javascript" src="js/App.js"></script>
<script type="text/javascript"
src="http://localhost:8000/socket.io/socket.io.js"></script>
<!-- CSS -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<link rel="stylesheet" href="css/bootstrap-responsive.min.css">
</head>
<body>
<div class="container" ng-view style="margin-top:50px"></div>
<!-- Controllers -->
<script type="text/javascript" src="js/controllers/DashboardController.js"></script>
</body>
</html>
main.html
<div class="container">
<div class="row">
<form class="form-inline">
<fieldset>
<legend>Escolha um grupo para enviar a mensagem</legend>
<div class="span12">
<select name="grupo" id="grupo" ng-model="grupo" ng-change="connectGrupo()">
<option value="">- Selecione o grupo -</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<input type="text" name="txt" id="txt" ng-model="txt">
<input class="btn btn-primary" type="button" name="sendBTN" id="sendBTN" ng-
click="sendMessage();" value="Enviar">
</div>
</fieldset>
</form>
</div>
</div>
<div class="container" id="grupos">
<div class="row">
<fieldset>
<legend>Mensagens</legend>
<div class="span4">
<div class="span3">Alertas para grupo A - <span
class="badge">{{alertA}}</span></div>
<br><br>
<ul id="msgA">
<li ng-repeat="msg in msgA">{{msg.texto}}</li>
</ul>
</div>
<div class="span4">
<div class="span3">Alertas para grupo B - <span
class="badge">{{alertB}}</span></div>
<br><br>
<ul id="msgB">
<li ng-repeat="msg in msgB">{{msg.texto}}</li>
</ul>
</div>
<div class="span4">
<div class="span3">Alertas para grupo C - <span
class="badge">{{alertC}}</span></div>
<br><br>
<ul id="msgC">
<li ng-repeat="msg in msgC">{{msg.texto}}</li>
</ul>
</div>
</fieldset>
</div>
</div>
<!-- SOCKET -->
<script type="text/javascript">
// Conetando ao SOCKET.IO
var socket = io.connect('http://localhost:8000');
socket.on('sendMessage',function(grupo,texto,total){
angular.element("#grupos").scope().updateGroup(grupo,texto,total);
});
</script>
App.js
$app = angular.module('App',[]);
$app.config(function($routeProvider){
$routeProvider.
when('/' {templateUrl:'view/dashboard/main.html',controller:DashboardController});
});
DashboardController.js
function DashboardController($scope) {
$scope.alertA = 0;
$scope.alertB = 0;
$scope.alertC = 0;
$scope.msgA = [];
$scope.msgB = [];
$scope.msgC = [];
$scope.grupoSai = "";
$scope.grupoEnt = "";
$scope.connectGrupo = function() {
var entrada = $scope.grupo;
var saida = $scope.grupoEnt;
if(entrada != saida) {
$scope.grupoSai = saida;
$scope.grupoEnt = entrada;
} else {
$scope.grupoEnt = entrada;
$scope.grupoSai = saida;
}
socket.emit('dashboardChannel', saida, entrada);
}
$scope.updateGroup = function(grupo,texto,total) {
$scope["alert"+grupo] = total;
$scope["msg"+grupo].push({
id: total,
texto: texto
});
}
$scope.sendMessage = function() {
var grupoEnt = $scope.grupoEnt;
var mensagem = $scope.txt;
if(grupoEnt == "A") {
$scope.alertA++;
socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertA);
} else if(grupoEnt == "B") {
$scope.alertB++;
socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertB);
} else if(grupoEnt == "C") {
$scope.alertC++;
socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertC);
}
}
}
socket-server.js
var express = require('express'),
app = express(),
http = require('http'),
server = http.createServer(app),
io = require('socket.io').listen(server);
server.listen(8000);
io.sockets.on('connection', function (socket) {
socket.on('dashboardChannel', function(grupoA,grupoB) {
socket.join(grupoB);
socket.leave(grupoA);
});
socket.on('dashboardClient', function(grupo,mensagem,total) {
io.sockets.in(grupo).emit('sendMessage', grupo, mensagem, total);
});
});
Bom... acho que é isso, se alguém tiver algo para melhorar só melhorar e adaptar
as suas necessidades. Forte abraço!!

Contenu connexe

Tendances

Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJSRodrigo Branas
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0Wilson Mendes
 
AngularJS - Just Digital
AngularJS - Just DigitalAngularJS - Just Digital
AngularJS - Just DigitalJust Digital
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJSWilson Mendes
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Julian Cesar
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSHenrique Limas
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UICleiton Francisco
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)Zeno Rocha
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivoVinicius Reis
 
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!José Barbosa
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Um futuro chamado Web Components
Um futuro chamado Web ComponentsUm futuro chamado Web Components
Um futuro chamado Web ComponentsZeno Rocha
 
Começando com Vue.js
Começando com Vue.jsComeçando com Vue.js
Começando com Vue.jsmarcusbalbi
 

Tendances (20)

Introdução ao AngularJS
Introdução ao AngularJSIntrodução ao AngularJS
Introdução ao AngularJS
 
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0O futuro dos WebApps com AngularJS 2.0
O futuro dos WebApps com AngularJS 2.0
 
AngularJS - Just Digital
AngularJS - Just DigitalAngularJS - Just Digital
AngularJS - Just Digital
 
Performance com AngularJS
Performance com AngularJSPerformance com AngularJS
Performance com AngularJS
 
Curso AngularJS - Parte 2
Curso AngularJS - Parte 2Curso AngularJS - Parte 2
Curso AngularJS - Parte 2
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)Desenvolvimento Front end (AngularJS e Bootstrap)
Desenvolvimento Front end (AngularJS e Bootstrap)
 
Material Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJSMaterial Design simples e rapido com AngularJS
Material Design simples e rapido com AngularJS
 
React - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UIReact - Biblioteca Javascript para criação de UI
React - Biblioteca Javascript para criação de UI
 
Como Perder Peso (no browser)
Como Perder Peso (no browser)Como Perder Peso (no browser)
Como Perder Peso (no browser)
 
Vue.js - o framework progressivo
Vue.js - o framework progressivoVue.js - o framework progressivo
Vue.js - o framework progressivo
 
Vue.js
Vue.jsVue.js
Vue.js
 
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Angular js
Angular jsAngular js
Angular js
 
Angular js
Angular jsAngular js
Angular js
 
Apresentação angular js
Apresentação angular jsApresentação angular js
Apresentação angular js
 
Um futuro chamado Web Components
Um futuro chamado Web ComponentsUm futuro chamado Web Components
Um futuro chamado Web Components
 
Começando com Vue.js
Começando com Vue.jsComeçando com Vue.js
Começando com Vue.js
 

En vedette

En vedette (8)

Advertising History 16292
Advertising History 16292Advertising History 16292
Advertising History 16292
 
Time sheet
Time sheetTime sheet
Time sheet
 
Reklamın Etkinliği
Reklamın  EtkinliğiReklamın  Etkinliği
Reklamın Etkinliği
 
Reklam Planlaması
Reklam  PlanlamasıReklam  Planlaması
Reklam Planlaması
 
rdt
rdtrdt
rdt
 
Prueba
PruebaPrueba
Prueba
 
AngularJS sem medo
AngularJS sem medoAngularJS sem medo
AngularJS sem medo
 
Criando um componente de busca com AngularJS
Criando um componente de busca com AngularJSCriando um componente de busca com AngularJS
Criando um componente de busca com AngularJS
 

Similaire à AngularJS com NODE.JS e Socket.IO

Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.jsAlberto Souza
 
Directive com AngularJS - Datepicker
Directive com AngularJS - DatepickerDirective com AngularJS - Datepicker
Directive com AngularJS - DatepickerDouglas Lira
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScriptHeider Lopes
 
2° Codelab - Por onde começar com AngularJS
2° Codelab  - Por onde começar com AngularJS2° Codelab  - Por onde começar com AngularJS
2° Codelab - Por onde começar com AngularJSGDGFoz
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemandDouglas Lira
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endGiovanny Valente
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheirasLambda 3
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseLuiz Duarte
 
Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework JavascriptMarcio Romu
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento webRodrigo Rodrigues
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Evandro Klimpel Balmant
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Gustavo Corrêa Alves
 
jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptLuiz Oliveira
 

Similaire à AngularJS com NODE.JS e Socket.IO (20)

Produtividade infinito e além com We.js
Produtividade infinito e além com We.jsProdutividade infinito e além com We.js
Produtividade infinito e além com We.js
 
Directive com AngularJS - Datepicker
Directive com AngularJS - DatepickerDirective com AngularJS - Datepicker
Directive com AngularJS - Datepicker
 
IoTizando com JavaScript
IoTizando com JavaScriptIoTizando com JavaScript
IoTizando com JavaScript
 
2° Codelab - Por onde começar com AngularJS
2° Codelab  - Por onde começar com AngularJS2° Codelab  - Por onde começar com AngularJS
2° Codelab - Por onde começar com AngularJS
 
AngularJS com loadOnDemand
AngularJS com loadOnDemandAngularJS com loadOnDemand
AngularJS com loadOnDemand
 
Desenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-endDesenvolvendo aplicações com Angular e Laravel no Back-end
Desenvolvendo aplicações com Angular e Laravel no Back-end
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
Backbone.js nas trincheiras
Backbone.js nas trincheirasBackbone.js nas trincheiras
Backbone.js nas trincheiras
 
Spa com angular js flisol 2015 - aquidauana ms
Spa com angular js   flisol 2015 - aquidauana msSpa com angular js   flisol 2015 - aquidauana ms
Spa com angular js flisol 2015 - aquidauana ms
 
Workshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + MongooseWorkshop Node.js + MongoDB + Mongoose
Workshop Node.js + MongoDB + Mongoose
 
Prototype Framework Javascript
Prototype Framework JavascriptPrototype Framework Javascript
Prototype Framework Javascript
 
Introdução sobre desenvolvimento web
Introdução sobre desenvolvimento webIntrodução sobre desenvolvimento web
Introdução sobre desenvolvimento web
 
jQuery
jQueryjQuery
jQuery
 
jQuery
jQueryjQuery
jQuery
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
Interfaces Ricas para WEB com jQuery e jQueryUI (User Interface)
 
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.Performance - Acelere seu site! Na web tempo é mais que dinheiro.
Performance - Acelere seu site! Na web tempo é mais que dinheiro.
 
Java Script
Java ScriptJava Script
Java Script
 
jQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com JavascriptjQuery Mobile - Aplicações móveis com Javascript
jQuery Mobile - Aplicações móveis com Javascript
 

Dernier

planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfmaurocesarpaesalmeid
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxLuizHenriquedeAlmeid6
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesFabianeMartins35
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFtimaMoreira35
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇJaineCarolaineLima
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMHELENO FAVACHO
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdfLeloIurk1
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...azulassessoria9
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.Mary Alvarenga
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOAulasgravadas3
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéisines09cachapa
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdfLeloIurk1
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfEmanuel Pio
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresAnaCarinaKucharski1
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Ilda Bicacro
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfMarianaMoraesMathias
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...Rosalina Simão Nunes
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)ElliotFerreira
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médiorosenilrucks
 

Dernier (20)

planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdfplanejamento_estrategico_-_gestao_2021-2024_16015654.pdf
planejamento_estrategico_-_gestao_2021-2024_16015654.pdf
 
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptxSlides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
Slides Lição 05, Central Gospel, A Grande Tribulação, 1Tr24.pptx
 
Revolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividadesRevolução russa e mexicana. Slides explicativos e atividades
Revolução russa e mexicana. Slides explicativos e atividades
 
Bullying, sai pra lá
Bullying,  sai pra láBullying,  sai pra lá
Bullying, sai pra lá
 
Ficha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdfFicha de trabalho com palavras- simples e complexas.pdf
Ficha de trabalho com palavras- simples e complexas.pdf
 
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
ATIVIDADE - CHARGE.pptxDFGHJKLÇ~ÇLJHUFTDRSEDFGJHKLÇ
 
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEMPRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
PRÁTICAS PEDAGÓGICAS GESTÃO DA APRENDIZAGEM
 
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
421243121-Apostila-Ensino-Religioso-Do-1-ao-5-ano.pdf
 
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
PROVA - ESTUDO CONTEMPORÂNEO E TRANSVERSAL: LEITURA DE IMAGENS, GRÁFICOS E MA...
 
Atividade - Letra da música Esperando na Janela.
Atividade -  Letra da música Esperando na Janela.Atividade -  Letra da música Esperando na Janela.
Atividade - Letra da música Esperando na Janela.
 
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃOFASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
FASE 1 MÉTODO LUMA E PONTO. TUDO SOBRE REDAÇÃO
 
About Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de HotéisAbout Vila Galé- Cadeia Empresarial de Hotéis
About Vila Galé- Cadeia Empresarial de Hotéis
 
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
5 bloco 7 ano - Ensino Relogioso- Lideres Religiosos _ Passei Direto.pdf
 
Historia da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdfHistoria da Arte europeia e não só. .pdf
Historia da Arte europeia e não só. .pdf
 
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos DescritoresATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
ATIVIDADE PARA ENTENDER -Pizzaria dos Descritores
 
Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!Rota das Ribeiras Camp, Projeto Nós Propomos!
Rota das Ribeiras Camp, Projeto Nós Propomos!
 
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdfPROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
PROGRAMA DE AÇÃO 2024 - MARIANA DA SILVA MORAES.pdf
 
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de..."É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
"É melhor praticar para a nota" - Como avaliar comportamentos em contextos de...
 
Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)Análise poema país de abril (Mauel alegre)
Análise poema país de abril (Mauel alegre)
 
apostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médioapostila projeto de vida 2 ano ensino médio
apostila projeto de vida 2 ano ensino médio
 

AngularJS com NODE.JS e Socket.IO

  • 1. NODE.JS + SOCKET.IO AngularJS Author: Douglas Lira douglas.lira.web@gmail.com
  • 2. Neste tutorial não pretendo detalhar as tecnologias envolvidas, tentarei explicar o mais breve possível sobre cada um deles e por a mão na massa. Estou estudando há um bom tempo e confesso que estou bastante empolgado com a união desses três monstrinhos que em breve ira compor o motorzinho do Cylcus – http://cyclus.myrabrasil.com.br. O que é AngularJS? AngularJS é um framewok criado e mantido pelos desenvolvedores do Google. Diferentemente de outros frameworks JavaScript ele funciona como uma espécie de extensão da linguagem HTML. O que é NODE.JS? É uma plataforma construída sobre o motor Javascript do Google Chrome para facilmente construir aplicações de rede rápidas e escaláveis. Node.JS usa um modelo de I/O direcionada a evento não bloqueante que o torna leve e eficiente, ideal para aplicações em tempo real com troca intensa de dados através de dispositivos distribuídos. O que é SOCKET.IO? Uma API de JavaScript simples, baseada em eventos que te permite comunicar entre o servidor e o cliente sem esforço e em tempo real.
  • 3. 1 – A idéia A ideia é mostrar como o Socket.IO funciona, então iremos criar três grupos (A, B e C). Ao acessar nossa página o usuário poderá escolher qual grupo ele pretende participar e interagir recebendo e enviando mensagens do grupo, porem só podera receber e enviar mensagens do grupo que o mesmo participa. 2 – Ferramentas – Node.JS – http://nodejs.org/ – AngularJS - http://www.angularjs.org/ – Socket.IO - http://socket.io/ Obs.: Estou presumindo que você já tenha instalado o node.js e saiba executar os scripts =) 3 – Estrutura dos Arquivos index.html <!DOCTYPE html> <html ng-app="App"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>NODE.JS + SOCKET.IO - Douglas Lira</title> <!-- JS --> <script type="text/javascript" src="js/lib/jquery-1.10.2.min.js"></script> <script type="text/javascript" src="js/lib/angular.min.js"></script> <script type="text/javascript" src="js/App.js"></script> <script type="text/javascript" src="http://localhost:8000/socket.io/socket.io.js"></script> <!-- CSS --> <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel="stylesheet" href="css/bootstrap-responsive.min.css"> </head> <body> <div class="container" ng-view style="margin-top:50px"></div> <!-- Controllers --> <script type="text/javascript" src="js/controllers/DashboardController.js"></script> </body> </html>
  • 4. main.html <div class="container"> <div class="row"> <form class="form-inline"> <fieldset> <legend>Escolha um grupo para enviar a mensagem</legend> <div class="span12"> <select name="grupo" id="grupo" ng-model="grupo" ng-change="connectGrupo()"> <option value="">- Selecione o grupo -</option> <option value="A">A</option> <option value="B">B</option> <option value="C">C</option> </select> <input type="text" name="txt" id="txt" ng-model="txt"> <input class="btn btn-primary" type="button" name="sendBTN" id="sendBTN" ng- click="sendMessage();" value="Enviar"> </div> </fieldset> </form> </div> </div> <div class="container" id="grupos"> <div class="row"> <fieldset> <legend>Mensagens</legend> <div class="span4"> <div class="span3">Alertas para grupo A - <span class="badge">{{alertA}}</span></div> <br><br> <ul id="msgA"> <li ng-repeat="msg in msgA">{{msg.texto}}</li> </ul> </div> <div class="span4"> <div class="span3">Alertas para grupo B - <span class="badge">{{alertB}}</span></div> <br><br> <ul id="msgB"> <li ng-repeat="msg in msgB">{{msg.texto}}</li> </ul> </div> <div class="span4"> <div class="span3">Alertas para grupo C - <span class="badge">{{alertC}}</span></div> <br><br> <ul id="msgC"> <li ng-repeat="msg in msgC">{{msg.texto}}</li> </ul> </div> </fieldset> </div> </div> <!-- SOCKET --> <script type="text/javascript"> // Conetando ao SOCKET.IO var socket = io.connect('http://localhost:8000'); socket.on('sendMessage',function(grupo,texto,total){ angular.element("#grupos").scope().updateGroup(grupo,texto,total); }); </script>
  • 5. App.js $app = angular.module('App',[]); $app.config(function($routeProvider){ $routeProvider. when('/' {templateUrl:'view/dashboard/main.html',controller:DashboardController}); }); DashboardController.js function DashboardController($scope) { $scope.alertA = 0; $scope.alertB = 0; $scope.alertC = 0; $scope.msgA = []; $scope.msgB = []; $scope.msgC = []; $scope.grupoSai = ""; $scope.grupoEnt = ""; $scope.connectGrupo = function() { var entrada = $scope.grupo; var saida = $scope.grupoEnt; if(entrada != saida) { $scope.grupoSai = saida; $scope.grupoEnt = entrada; } else { $scope.grupoEnt = entrada; $scope.grupoSai = saida; } socket.emit('dashboardChannel', saida, entrada); } $scope.updateGroup = function(grupo,texto,total) { $scope["alert"+grupo] = total; $scope["msg"+grupo].push({ id: total, texto: texto }); } $scope.sendMessage = function() { var grupoEnt = $scope.grupoEnt; var mensagem = $scope.txt; if(grupoEnt == "A") { $scope.alertA++; socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertA); } else if(grupoEnt == "B") { $scope.alertB++; socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertB); } else if(grupoEnt == "C") { $scope.alertC++; socket.emit('dashboardClient', grupoEnt, mensagem, $scope.alertC); } } }
  • 6. socket-server.js var express = require('express'), app = express(), http = require('http'), server = http.createServer(app), io = require('socket.io').listen(server); server.listen(8000); io.sockets.on('connection', function (socket) { socket.on('dashboardChannel', function(grupoA,grupoB) { socket.join(grupoB); socket.leave(grupoA); }); socket.on('dashboardClient', function(grupo,mensagem,total) { io.sockets.in(grupo).emit('sendMessage', grupo, mensagem, total); }); }); Bom... acho que é isso, se alguém tiver algo para melhorar só melhorar e adaptar as suas necessidades. Forte abraço!!