无法使用Socket.IO向节点服务器发送

时间:2014-11-14 23:24:01

标签: javascript node.js sockets google-chrome websocket

我在我的项目中使用socket.io并且无法向服务器发送数据,因此我设置了一个简单的测试用例。我已经在Google Chrome中创建了一个文件index.html(使用文件://地址):

<!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>

我的节点服务器上有这个真实的实现代码:

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 个答案:

答案 0 :(得分: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");
    });
});