我有一个现有的Web项目,其中包含很少的依赖项,例如
的style.css
依旧......
我认为socketIO无法加载这样的文件:
<script type="text/javascript" src="https://code.jquery.com/jquery-2.1.1.min.js"></script>
问题是我想让我的应用程序与socket.io进行通信,但是当我启动服务器文件(index.js)时,我可以看到我的页面,但完全没有css而没有脚本。
我的index.js看起来像这样:
var http = require('http');
var fs = require('fs');
var server = http.createServer(function(req, res) {
fs.readFile('./index.html', 'utf-8', function(error, content) {
res.writeHead(200, {"Content-Type": "text/html"});
res.end(content);
});
});
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
console.log('Un client est connecté !');
socket.emit('message', 'Vous êtes bien connecté !');
});
server.listen(8080);
那么您是否知道如何告诉服务器注入我现有网站的所有资源?
答案 0 :(得分:0)
我认为您使用的示例代码仅仅是为客户提供服务的简单示例,而不是实际提供HTML网页或其他静态内容。
使用Express,您可以这样做:
var app = require('../app');
var server = http.createServer(app);
然后在app.js:
app.use(express.static(path.join(__dirname, 'public'))); //to render static content files to the browser from a predefined static resource directory
请注意express.static
如何指向静态内容的位置。在这种情况下,它位于/public
文件夹中(可以是您选择的任何其他文件夹)。这就是index.html
,*.css
以及您提到的所有资源的位置。
可以找到详细的示例here。
最后,您在问题中粘贴的代码无需在index.html
内打开并提供http.createServer
文件即可运行;它不适用于静态内容。