Pregunta

Acabo de configurar un servidor Node.js básico con Socket.io en mi máquina local. ¿Hay alguna forma de establecer un documento root para que pueda incluir otros archivos? Es decir. A continuación tengo un DIV con una imagen de fondo AA. La ruta de la imagen es relativa a la ubicación del servidor, sin embargo, esto no funciona. ¿Algunas ideas? ¡Gracias!

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); 
¿Fue útil?

Solución

Para el estilo de imagen de fondo, el navegador creará una solicitud HTTP completamente nueva a su servidor con ruta *img/carbon_fibre.gif *, y esta solicitud ciertamente alcanzará su función anónima, pero su función de respuesta solo escribe un div con contentype: text/html independientemente del nombre req.pathname para que la imagen no se pueda mostrar correctamente.

Puede agregar algún código a su función como:

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

No estoy muy familiarizado con NodeJS, por lo que el código anterior solo demuestra una lógica pero no el bloque de código ejecutable real.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top