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

Websocket

app.js

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

app.set('io',io);

var porta = process.env.PORT || 3000;
var server = http.listen(porta, function () {

    var host = server.address().address;
    var port = server.address().port;

    console.log('Example app listening at http://%s:%s', host, port);

});

index.ejs

<script src="/socket.io/socket.io.js" charset="utf-8"></script>
<script>
    var socket = io();
    socket.on('novaPromocao', function (data) {
        //document.location.href= "/produtos/"+data.livro.id+"?promocao="+data.mensagem;
      alert(data.livro);
    });
</script>

promocoes.js

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

    listaPromocoes.lista (function(errs, result){
      res.render('promocoes/form', {lista: result});
    });
  });

  app.post('/promocoes', function(req, res){
    var promocoes = req.body;
  app.get('io').emit('novaPromocao', promocoes);
    res.redirect('promocoes/form');
  })
}
13 respostas

Opa, o que acontece?

Não esta carregando o módulo socket.io, observei no dev tools e não vem nada. Já tentei mudar o caminho da pasta para /node_modules/socket.io/socket.io.js e mesmo assim não surte efeito.

Conferi também com os códigos que estão no github e não vi diferenças

Yuri, perdão pela demora. Você pode subir seu código no github e apontar o link aqui? É algum detalhe que vai ser mais fácil de ver executando.

Github

Opa, baixei seu código e funcionou perfeitamente... Rodei na versão 6.9.1 do node, parece a mais recente tb, né? O socket.io funcionou tranquilamente... A única diferença é que usei a minha pasta node_modules. Tenta baixar a minha pasta https://dl.dropboxusercontent.com/u/6015854/node_modules.zip e faz um teste? Pode ter sido alguma versão mais nova que bugou...

Erro ainda persiste, o socket não é carregado. Será que não é algo na hora em dou o require ? ou quando instancio ele no form.ejs ?

No seu devtools do chrome ou outro navegador, aparece o que na aba network quando vc busca por socket.io ? Ainda tem uma aba chamada ws, dentro da aba network.. dá para vc perceber se o web socket foi carregado...

Então, simplesmente nada em ambas abas. Isso é o que me intriga, como é que ele nem sequer esta carregando

consegue baixar o meu e rodar => https://github.com/asouza/casadocodigo-javascript ?

Realmente não sei o que pode ser :(.

Olá, Yuri!

Também baixei seu código para avaliar e não encontrei nenhum problema. O exemplo de websocket executou normalmente. Conseguiu resolver o problema? Se sim, sugiro relatar para que outras pessoas aproveitem a sua solução.

solução!

Estava tomando o mesmo erro que o seu.

Tive que fazer a seguinte adaptação na minha app.js de acordo com a documentação do socket.io:

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

app.set('io', io);
server.listen(3000, function(){
    console.log("Servidor rodando");
});

Atente para o "server.listen(3000, ..."

Feito isso funcionou!

http://socket.io/docs/

Me desculpem, eu já havia resolvido o erro de outra maneira olhando a doc do socket. Mesmo assim muito obrigado gjunior o/

Me desculpem, eu já havia resolvido o erro de outra maneira olhando a doc do socket. Mesmo assim muito obrigado gjunior o/