socket.io没有拿起子文件夹

当我在本地运行socket.io让说http://localhost:8000/这不会select所有的文件夹的CSS和JS。 这是我的结构:

 <head> <script type="text/javascript" src="js/main.js"></script> <link rel="stylesheet" href="css/main.css"> <script src="socket.io/socket.io.js"></script> <script src="http://code.jquery.com/jquery-1.7.1.min.js"></script> </head> <script> var socket = io.connect('http://localhost:8000'); $('.box').click(function(){ var content = $(this).attr('id'); //console.log(content); socket.emit('click',content); }); socket.on('test', function(content){ $(".box").css({"background":"grey"}); $(".one,.two,.three,.four").hide(); $("#"+content).css({"background":"red"}); $("."+content).fadeIn(); //$('.box').css({"background":"grey"}); }); </script> 

server.js:

  var app = require('http').createServer(handler), io = require('socket.io').listen(app), fs = require('fs'); // creating the server ( localhost:8000 ) app.listen(8000); // on server started we can load our client.html page function handler(req, res) { fs.readFile(__dirname + '/client.html', function(err, data) { if (err) { console.log(err); res.writeHead(500); return res.end('Error loading client.html'); } res.writeHead(200); res.end(data); }); io.sockets.on('connection', function(socket){ socket.on('click', function(data){ io.sockets.emit('test',data); }); }); 

控制台扔在下面,它不能被发现:

 "http://localhost:8000/css/normalize.css". "http://localhost:8000/css/main.css". 

有人可以帮忙吗?

第二个问题:

我对此很新,所以不知道这是不是听起来很愚蠢。 但我想从实际的目录运行,让说: http://localhost/test/test2:8000而不是http://localhost:8000/

你似乎误解了Socket.io的作用。 这个JavaScript库处理客户端和服务器之间的实时通信。 在你的代码中,你完全不使用Socket.io:你没有定义任何连接处理程序,也不会发出任何事件。

你应该做的是修改你的HTTP服务器的代码来提供文件。 在你的例子中,你必须编辑处理传入请求的handler函数。 请查看HTTP模块的文档 。 你的app是一个http.Server对象 。 您的handler函数,根据文档,是:

requestListener是一个自动添加到“请求”事件的函数。

它处理一个http.IncomingMessage 。 然后,您应该查看包含客户端请求的URL的url属性 ,以便提供正确的文件。 在你的例子中,你总是提供相同的文件: client.html

总之,我build议你应该看看一些JavaScript库,这样可以简化Web服务器的创build,例如Express或Hapi 。 这将比你手动处理每个请求更容易。