2013-07-15 148 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>