Domanda

Ho appena installato un assistente node.js base con socket.io sulla mia macchina locale. C'è un modo per impostare una radice documento in modo che è possibile includere altri file. Vale a dire. Qui di seguito ho un DIV immagine di uno sfondo con. Il percorso l'immagine è relativa alla posizione del server, tuttavia questo non sta funzionando. Qualche idea? Grazie!

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); 
È stato utile?

Soluzione

Per lo stile background-image, il browser creerà una del tutto nuova richiesta HTTP al server con il percorso * img / carbon_fibre.gif *, e questa richiesta sarà certamente colpito la vostra funzione anonima, ma la funzione di risposta solo scrivere di nuovo un < em> div con ContentType:. text / html indipendentemente l'req.pathname in modo che l'immagine non può essere visualizzato correttamente

È possibile aggiungere un po 'di codice alla funzione come:

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

Io non sono molto familiare con nodejs, in modo che il codice di cui sopra dimostra solo una logica, ma non il vero e proprio blocco di codice eseguibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top