Na minha aplicação após implementar os códigos para o WebSocket tanto no cliente quanto no servidor, após cadastrar um novo produto para promoção o código não é retornado e emitido um alert no navegador. Alguém poderia analisar os códigos abaixo e ver onde pode esta o erro?
Script no index.ejs
<script src="/socket.io/socket.io.js"></script>
<script>
var socket = io();
socket.on('novaPromocao', function(data) {
alert("Livro em Promoção " + data.livro.id);
});
</script>
Script no app.js
var app = require('./config/express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.set('io', io);
http.listen(3000, function() {
console.log("Servidor rodando....");
});
Script promocoes route
module.exports = function(app) {
app.get('/promocoes/form', function(req,res) {
var connection = app.infra.connectionFactory();
var produtosDao = new app.infra.ProdutosDAO(connection);
produtosDao.lista(function(err, results){
res.render('promocoes/form', {lista:results});
});
connection.end();
});
app.post("/promocoes", function(req,res) {
var promocao = req.body;
app.get('io').emit('novaPromocao', promocao);
res.redirect('/promocoes/form');
});
}
Script form promocoes
<html>
<body>
<form action='/promocoes' method="post">
<div>
<input type="text" name="mensagem" />
</div>
<div>
<select name="livro[id]">
<%for(var i=0; i < lista.length; i++){%>
<option value="<%=lista[i].id%>"><%=lista[i].titulo%></option>
<%}%>
</select>
</div><br />
<input type="submit" value="Cadastrar Promoção" />
</form>
</body>
</html>