Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Alert Socket io não exibe

Bom Dia !

Durante a aula 8 efetuei todos os procedimentos em aula, porem não é exibido o alert no index.ejs, não consegui entender o porque não executa o alert e fazendo a inspeção no Navegador, aparece a conexão do Web Socket. Meus códigos ficaram assim:

index.ejs

<script src="/socket.io/socket.io.js"></script>
<script>
        var socket = io();
        console.log(data);
        socket.on('novaPromocao', function(data) {
            alert("Livro em Promocao " + data.livro.id);
        });
</script>

promocao.js

module.exports = function(pagina) {

    pagina.get('/promocao', function(requisicao, resultado) {
        var conexao = pagina.infraestrutura.connectionFactory();
        var produtosDAO = new     
        pagina.infraestrutura.ProdutosDAO(conexao);

        produtosDAO.lista(function(erro, results) {
            resultado.render('promocao/promocao', { livros: results });
        });

        conexao.end();
    });

    pagina.post("/promocao", function(requisicao, resultado) {
        var promocao = requisicao.body;
        console.log(promocao);
        pagina.get('io').emit('novaPromocao', promocao);
        resultado.redirect('/promocao');
    });
}

app.js

var aplicacao = require('./config/express')();
var http = require('http').Server(aplicacao);
var socket = require('socket.io')(http);

aplicacao.set('io', socket);

http.listen(3000, function() {
    console.log("Servidor em Execução");
});
1 resposta
solução!

Bom Dia !

Consegui exibir o alerta, colocando um console log no promocao.js, verifiquei que o JSON de retorno é livros e não livro.

Dessa forma alterei o index para tratar por livros e funcionou, o index.ejs ficou assim:

<script src="/socket.io/socket.io.js"></script>
    <script>
        var socket = io();
        socket.on('novaPromocao', function(data) {
            alert("Livro em Promocao " + data.livros.id);
        });
    </script>