2013-07-15 150 views
2

我试图将我的chrome浏览器连接到NodeJs服务器。所有代码在其他机器上都很好用。但是当我在机器上运行它时,它既不会产生错误,也不会产生成功。这里是代码socket.emit和socket.on在node.js中不起作用

服务器代码:

var server = http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

var io = require('socket.io').listen(server); 
io.sockets.on('message', function (socket) { 
    socket.emit('news', { hello: 'world' }); 

}); 

,这里是客户端代码。

<script> 
     var socket = io.connect('http://localhost:3000/'); 
     //console.log(socket); 
     socket.on("message",function(data){ 
      console.log(data); 
     }) 
    </script> 

请纠正我在哪里做错了。 console.log()在客户端不工作。我试图使用断点在chrome调试器中检查它,但它永远不会达到这一点。

+0

所以什么不同于其他机器和你的吗?我注意到的另一件事是,你从一开始就从不“发射”任何东西,所以除非你通过控制台发送一个命令,否则你不会收到任何通过socket.io的消息。 – travis

回答

9

你缺少了一些代码:

io.sockets.on('connection', function (socket) { 
    socket.on('message', function (data) { 
    socket.emit('news', { hello: 'world' }); 
    }); 

    socket.on('another-message', function (data) { 
    socket.emit('not-news', { hello: 'world' }); 
    }); 
}); 

socket IO网站上得到。对于这个工作,你需要通过在该线将来自客户端的“消息”,东西开始:

<script> 
    var socket = io.connect('http://localhost:3000/'); 
    socket.on('connect',function(){ 
    socket.emit('message', 'Hello server'); 
    }); 

    socket.on('news', function(msg) { 
    alert('News from server: ' + msg.hello); 
    }); 
</script>