Frage

Ich habe gerade einen grundlegenden Node.js -Server mit Socket.io auf meiner lokalen Maschine eingerichtet. Gibt es eine Möglichkeit, ein Dokument -Root festzulegen, damit Sie andere Dateien einfügen können? Dh. Unten habe ich ein DIV mit AA -Hintergrundbild. Der Pfad, den das Bild relativ zum Speicherort des Servers ist, funktioniert jedoch nicht. Irgendwelche Ideen? Vielen Dank!

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); 
War es hilfreich?

Lösung

Für den Hintergrund-Image-Stil erstellt Browser eine völlig neue HTTP-Anforderung an Ihren Server mit Pfad *IMG/carbon_fibre.gif *, und diese Anfrage wird sicher div mit ContentType: text/html unabhängig vom Req.PathNamen, damit das Bild nicht ordnungsgemäß angezeigt werden kann.

Sie können Ihrer Funktion einen Code hinzufügen, wie:

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);

Ich bin mit NodeJS nicht sehr vertraut, daher zeigt der obige Code nur eine Logik, aber nicht den tatsächlichen Runnable -Codeblock.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top