无法加载socket.io.js

时间:2012-08-08 22:29:46

标签: javascript node.js socket.io

我正在创建一个具有单独服务器和客户端代码的应用程序(两个不同的git存储库)。

HTML就像一个UI,但它仍然需要加载/socket/socket.io.js才能与服务器通信。

这是我的HTML:

<html>
    <head>
        <script src="/socket/socket.io.js"></script>
        <script src="js/myStuff.js"></script>
    </head>

    <body>
    </body>
</html>

当使用以/c开头的地址查询时,服务器将自动将前缀替换为客户端代码目录。因此,网站加载如下:localhost:8080/c/index.htmljs/myStuff.js的请求实际上是/c/js/myStuff.js

这就是全部实施的方式:

var http = require("http");
var io = require("socket.io");
var fs = require("fs");
var iniparser = require("iniparser");

var config = iniparser.parseSync('./config.ini');

clientPath = config.server.clientPath; //   ../../Bla

var handler = function(req, res)
{    
    if (req.url[1] == "c")
    {
        req.url = req.url.slice(2, req.url.length); //Cut off the "/c"
        url = __dirname + "/" + clientPath + req.url;
    }
    else
    {
        url = req.url; //Nothing.
    }

    fs.readFile (url, function(err, data)
    {
        if (err)
        {
            res.writeHead(404);
            return res.end("File not found.");
        }

        res.writeHead(200);
        res.end(data);
    });
}

var server = http.createServer(handler);
server.listen(8080);
var socket = io.listen(server);

myStuff.js和index.html都正确加载,但加载/socket/socket.io.js时出现问题。这非常非常奇怪,因为我甚至没有碰到地址。

此错误由Google Chrome提供:

GET http://localhost:8080/socket/socket.io.js 404 (Not Found)

为什么会发生这种情况,我该如何解决?

1 个答案:

答案 0 :(得分:4)

看起来好像你没有在任何地方更改它,所以Socket.io JavaScript的默认位置是

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

不是socket / socket.io.js。