0

サーバーとクライアントのコードが別々になっているアプリを作成しています(2つの異なる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、サーバーはプレフィックスをクライアントコードディレクトリに自動的に置き換えます。したがって、Webサイトは次のようにロードされます:localhost:8080/c/index.html、およびの要求js/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ます。私は住所に触れさえしないので、それは非常に、非常に奇妙です。

このエラーはGoogleChromeによって発生します。

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

なぜこれが起こっているのですか、どうすれば修正できますか?

4

1 に答える 1

4

どこかで変更しているようには見えないため、Socket.ioJavaScriptのデフォルトの場所は

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

socket/socket.io.jsではありません。

于 2012-08-08T22:31:25.530 に答える