我使用Angular Seed project构建一个简单的网站。当我启动节点服务器并在localhost:8000输入url时,它会提供目录内容。我希望它能够提供index.html文件,但是希望在没有重定向的情况下执行此操作。
我相信我需要修改以下功能,并且我应该更改isDirectory
检查的代码,但我不确定这是否是正确的方法。任何建议将不胜感激。
StaticServlet.prototype.handleRequest = function(req, res) {
var self = this;
var path = ('./' + req.url.pathname).replace('//','/').replace(/%(..)/g, function(match, hex){
return String.fromCharCode(parseInt(hex, 16));
});
var parts = path.split('/');
if (parts[parts.length-1].charAt(0) === '.')
return self.sendForbidden_(req, res, path);
fs.stat(path, function(err, stat) {
if (err)
return self.sendMissing_(req, res, path);
if (stat.isDirectory())
return self.sendDirectory_(req, res, path);
return self.sendFile_(req, res, path);
});
}
更新#1
我有两个截图要澄清。第一个图像是我目前得到的,第二个图像是我想要的。
我得到什么
我想要的东西
更新#2
使用下面的Restify链接,我找到了以下示例,这正是我需要的。
var server = restify.createServer();
var io = socketio.listen(server);
server.get('/', function indexHTML(req, res, next) {
fs.readFile(__dirname + '/index.html', function (err, data) {
if (err) {
next(err);
return;
}
res.setHeader('Content-Type', 'text/html');
res.writeHead(200);
res.end(data);
next();
});
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
server.listen(8080, function () {
console.log('socket.io server listening at %s', server.url);
});
答案 0 :(得分:2)
angular-seed项目是客户端的起点,但不是服务器端的起点。 它们包括一个没有依赖关系的简单Web服务器节点脚本。这样你就不需要npm或其他模块了。
对于服务器端,您可以将节点与connect / express或任何其他Web服务器/语言一起使用。 你只需要提供休息服务并提供一些静态HTML。
由于您已经安装了节点restify,因此可能适合您。
更新:我创建了一个基本的示例,用于使用角度种子和restify:
https://github.com/roelandmoors/restify-angular-seed