我刚在本地计算机上使用socket.io设置了一个基本的node.js服务器。有没有办法设置文档根目录,以便您可以包含其他文件。 IE浏览器。下面我有一个背景图像的DIV。图像相对于服务器位置的路径,但这不起作用。有任何想法吗?谢谢!
var http = require('http'),
io = require('socket.io'), // for npm, otherwise use require('./path/to/socket.io')
server = http.createServer(function(req, res){
// your normal server code
res.writeHead(200, {'Content-Type': 'text/html'});
res.end('<div style="background-image:url(img/carbon_fibre.gif);"><h1>Hello world</h1></div>');
});
server.listen(8080);
// socket.io
var socket = io.listen(server);
答案 0 :(得分:3)
使用Express或Connect。示例:https://github.com/spadin/simple-express-static-server,http://senchalabs.github.com/connect/middleware-static.html
答案 1 :(得分:2)
对于背景图像样式,浏览器将使用路径* img / carbon_fibre.gif *为您的服务器创建一个全新的HTTP请求,并且此请求肯定会命中您的匿名函数,但您的响应函数只会回写< em> div with ContentType:text / html,无论req.pathname如何,都无法正确显示图像。
您可以在函数中添加一些代码,如:
var http = require('http'),
io = require('socket.io'),
fs = require('fs'),
server = http.createServer(function(req, res){
// find static image file
if (/\.gif$/.test(req.pathname)) {
fs.read(req.pathname, function(err, data) {
res.writeHead(200, { 'Content-Type': 'image/gif' });
res.end(data);
});
}
else {
// write your div
}
});
server.listen(8080);
我对nodejs不是很熟悉,所以上面的代码只演示了一个逻辑,而不是实际的可运行代码块。