Last active
December 29, 2015 13:41
-
-
Save gabrielfeitosa/76490db7b59c356e625a to your computer and use it in GitHub Desktop.
Pedidos com socket.io
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function() { | |
'use strict'; | |
angular.module('app') | |
.controller('LojaController', function($scope) { | |
var socket = io(); | |
var vm = this; | |
vm.pedido = {}; | |
vm.pedidos = []; | |
vm.enviar = enviar; | |
init(); | |
function init(){ | |
socket.on('loja pedidos', function(pedidos){ | |
vm.pedidos = pedidos; | |
$scope.$apply(); | |
}); | |
socket.on('loja pedido', function(pedido){ | |
var encontrou = false; | |
for(var x = 0; x < vm.pedidos.length && !encontrou; x++){ | |
if(vm.pedidos[x].id === pedido.id){ | |
vm.pedidos[x].status = pedido.status; | |
encontrou = true; | |
} | |
} | |
if(!encontrou){ | |
vm.pedidos.push(pedido); | |
} | |
$scope.$apply(); | |
}); | |
} | |
function enviar() { | |
socket.emit('loja enviar', vm.pedido); | |
vm.pedido.item = ''; | |
} | |
}); | |
})(); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
'use strict'; | |
var express = require('express'), | |
app = express(), | |
http = require('http').Server(app), | |
io = require('socket.io')(http), | |
port = process.env.PORT || 5000; | |
app.use(express.static('public')); | |
var pedidos = []; | |
var id = 0; | |
io.on('connection', function(socket){ | |
io.to(socket.id).emit('loja pedidos', pedidos); | |
socket.on('loja enviar', function(pedido){ | |
pedido.id = id++; | |
pedido.data = new Date(); | |
pedido.status = 'Solicitado'; | |
pedidos[pedido.id] = pedido; | |
io.emit('loja pedido', pedido); | |
filaSolicitado(pedido.id); | |
}); | |
function filaSolicitado(id){ | |
var pedido = pedidos[id]; | |
if(verificaSePodeExecutar(pedido.data,3000)){ | |
pedido.status = 'Em atendimento'; | |
io.emit('loja pedido', {id: pedido.id, status: pedido.status}); | |
filaEmAtendimento(id); | |
}else{ | |
setTimeout(filaSolicitado,1000, id); | |
} | |
} | |
function filaEmAtendimento(id){ | |
var pedido = pedidos[id]; | |
if(verificaSePodeExecutar(pedido.data,7000)){ | |
pedido.status = 'Atendido'; | |
io.emit('loja pedido', {id: pedido.id, status: pedido.status}); | |
}else{ | |
setTimeout(filaEmAtendimento,1000, id); | |
} | |
} | |
function verificaSePodeExecutar(date,time){ | |
var agora = new Date(); | |
var diff = (agora - date); | |
return diff > time; | |
} | |
}); | |
http.listen(port, function(){ | |
console.log('Servidor rodando na porta:'+port); | |
}); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment