为什么以下nodejs代码不能与socketio + express 3一起使用?

时间:2012-08-07 02:48:40

标签: node.js

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

我有一个包含以下内容的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页面时,我收到“info - unhandled socket.io url”

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

1 个答案:

答案 0 :(得分:3)

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

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

假设index.html位于您应用的根级别,或者更常见的是:

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

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