Задать корень документа для вашего http-сервера Node.js? - PullRequest
0 голосов
/ 28 апреля 2011

Я просто настроил базовый сервер node.js с socket.io на моей локальной машине.Есть ли способ установить корень документа, чтобы вы могли включать другие файлы.То есть.Ниже у меня есть 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); 

Ответы [ 2 ]

3 голосов
/ 29 апреля 2011
2 голосов
/ 28 апреля 2011

Для стиля фонового изображения браузер создаст совершенно новый HTTP-запрос на ваш сервер с путем * img / carbon_fibre.gif *, и этот запрос наверняка попадет в вашу анонимную функцию, но ваша функция ответа только записывает div с ContentType: text / html независимо от имени req.path, чтобы изображение не отображалось должным образом.

Вы можете добавить некоторый код в свою функцию, например:

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, поэтому приведенный выше код демонстрирует только логику, но не фактический исполняемый блок кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...