1

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

我有一个 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.io url”

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

4

1 回答 1

3

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

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

假设index.html在您的应用程序的根级别,或者更一般地说:

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

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

于 2012-08-07T03:27:38.867 回答