2014-11-14 111 views
0

我在我的项目中使用了socket.io,并且无法向服务器发送数据,所以我设置了一个简单的测试用例。我创建了一个文件,index.html这是我在谷歌浏览器已经打开(使用文件://地址):无法使用Socket.IO发送到节点服务器

<!DOCTYPE html> 
<html> 
    <head> 
     <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> 
     <script type="text/javascript"> 
      var socket = io('http://localhost:8080'); 
      socket.emit('clientDetails', {hello: 'world'}); 

      socket.on('connect', function() { 
       socket.emit('clientDetails', {hello: 'world'}); 
      }); 
     </script> 
    </head> 
    <body></body> 
</html> 

而且我有这个verys我的节点服务器上imple代码:

var app = require('http').createServer(); 
var io = require('socket.io')(app); 

// Make the server listen on porr 8080 
app.listen(8080); 

io.on('connect', function(socket) { 
    console.log("Client connected"); 
}); 

io.on('clientDetails', function(socket) { 
    console.log("Got client details"); 
}); 

当我在Chrome中加载HTML页面时,我得到一个由Node打印的Client connected消息。一切都很好。但我从来没有看到一个Got client details字符串。

我怀疑有一些错误的服务器在寻找Chrome的网络工具,我可以看到数据被发送到服务器,至少我想这就是这是什么:

enter image description here

为什么我我无法捕获客户端发送数据到服务器?

回答

1

Per the docs以下内容:

io.on('connect', function(socket) { 
    console.log("Client connected"); 
}); 

io.on('clientDetails', function(socket) { 
    console.log("Got client details"); 
}); 

应该

io.on('connect', function(socket) { 
    console.log("Client connected"); 

    socket.on('clientDetails', function(data) { 
     console.log("Got client details"); 
    }); 
}); 
相关问题