无法使用sockets.io从客户端向NodeJS服务器发送/发出

时间:2012-04-21 13:37:00

标签: node.js socket.io

我的斗智尽头,所以任何帮助都会非常感激。

我正在尝试通过socket.io从我的客户端(网页)向我的Node.JS服务器发送或发送消息。这是在作为localhost运行的Windows 7上。

确切的问题是:

  • 我可以将消息从服​​务器发送到客户端就好了。
  • 从客户端向服务器发送消息不起作用:(

服务器代码:

// create http server
var app = require('http').createServer(httpHandler);
// socket.io
var io = require('socket.io').listen(app);

var port = 8080;

app.listen(port);
console.log('Server running at http://127.0.0.1:' + port);

// socket connection handler
io.sockets.on('connection', function (client) {
    // this works great:    
    client.emit('text_msg', {msg: 'Welcome you are now connected.'});

    // plain message - this never works :(
    io.sockets.on('message', function(data){
        console.log("*************************** message : " + data.txt);
    });
});

以下是一些客户端代码:

<script src="/socket.io/socket.io.js"></script>

...snip...

var socket = io.connect( 'http://localhost' );
socket.emit('message', {txt:"test"});

socket.on('text_msg', function (data) {
    alert( data.msg );
});

我尝试过以下浏览器:

  • Chrome 18(Windows 7)
  • Firefox 11(Windows 7)
  • Internet Explorer 9(Windows 7)

从NodeJS输出,我可以看到Chrome和Firefox都使用Websockets,IE9使用“htmlfile”。

NodeJS版本为0.6.15

npm list看起来像:

├── node-static@0.5.9
└─┬ socket.io@0.9.6
  ├── policyfile@0.0.4
  ├── redis@0.6.7
  └─┬ socket.io-client@0.9.6
    ├─┬ active-x-obfuscator@0.0.1
    │ └── zeparser@0.0.5
    ├── uglify-js@1.2.5
    ├─┬ ws@0.4.13
    │ ├── commander@0.5.2
    │ └── options@0.0.3
    └── xmlhttprequest@1.2.2

感谢您的帮助。

1 个答案:

答案 0 :(得分:2)

更改:

io.sockets.on('message', function(data){
console.log("*************************** message : " + data.txt);
});

client.on('message', function(data){
console.log("*************************** message : " + data.txt);
});

致电时

io.sockets.on('connection', function (client)

您正在定义“client”,它是客户端发出的套接字的当前名称空间。