socket.emit和socket.on在node.js中不起作用

时间:2013-07-15 20:44:12

标签: node.js socket.io

我尝试将Chrome浏览器连接到NodeJs Server。所有代码在其他机器上运行良好。但是当我在我的机器上运行时,它既没有出错也没有成功。这是代码

服务器代码:

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调试器中检查它,但它永远不会到那一点。

1 个答案:

答案 0 :(得分:11)

您缺少一些代码:

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>