2013-07-15 3 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() в клиенте не работает. Я попытался проверить его в хром-отладчике, используя точки останова, но он никогда не доходит до этого.

+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> 
Смежные вопросы