Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

io is not defined

O navegador não consegue encontrar o recurso /socket-io/socket-io.js, (Console sempre exibe 'Uncaught ReferenceError: io is not defined' . Também tentei importar o js de um endereço externo, o browser até fica fazendo as requisições, mar o alert não é chamado. Alguém tem alguma luz?

app.js

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

app.set('io', io );

app.listen(3000, function(){
  console.log("servidor rodando... ");
});

promocoes.js

module.exports = function(app){
  app.get('/promocoes/form', function(req, res){
    var connection = app.infra.connectionFactory();
    var produtoDAO = new app.infra.ProdutoDAO(connection);

    produtoDAO.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');
  });
}

html (incluído antes do fechamento da tag body)

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

S.O ubuntu 16.04, testei no chrome e no firefox, sem sucesso.

2 respostas
solução!

troca de app.listenpara http.listen. É o http que é passado para a criação do objeto do socket.io

Valeu Alberto! Era isso mesmo!!! Abraço!