为什么下面的nodejs代码不能用socketio + express 3?

我不明白为什么这不起作用:

我有一个sample.js包含:

var http = require('http'); var socket = require('socket.io'); var express = require('express'); var app = express(); var server = http.createServer(app); var io = socket.listen(server); io.sockets.on('connection', function(client) { console.log('Client Connected...'); client.emit('messages', {hello: 'world'}); }); server.listen(8080); 

我有一个index.html页面,其中包含:

 <!DOCTYPE html> <html> <head> <script src="socket.io.js"></script> <script> var server = io.connect('http://mydomain:8080'); server.on('messages', function(data) { alert(data.hello); }); </script> </head> <body> </body> </html> 

更新:当使用socket.io-client.js库时,当我去http://mydomain:8080页,我得到一个“信息 – 未处理的socket.iourl”

有人能指出我可能做错了什么吗?

你的服务器永远不会发送index.html因为你从来没有告诉过它。 你需要像这样的东西:

 app.get('/', function(req, res) { res.sendfile('index.html'); }); 

假设index.html位于应用程序的根目录,或者更一般地说:

 app.use(express.static(__DIRNAME+'/public')); 

然后将index.html (以及其他任何静态文件,如样式表)放在应用程序的public子目录中。