socket.io映像目录无法正常工作

时间:2015-10-08 11:15:53

标签: node.js socket.io

我复制了示例服务器代码:

var app = require('http').createServer(handler)
var io = require('socket.io')(app);
var fs = require('fs');

app.listen(80);

function handler (req, res) {
  fs.readFile(__dirname + '/index.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading index.html');
    }

    res.writeHead(200);
    res.end(data);
  });
}

当我访问images目录中的某个图像文件时,它没有显示图像。怎么实现呢?如果我尝试任何地址,那么始终是index.html的内容。

1 个答案:

答案 0 :(得分:0)

您的node.js服务器是硬编码的,只返回一个文件index.html,无论浏览器请求的文件是什么。因此,当浏览器请求可能在index.html中引用的图片时,您的代码只会再次发回index.html

请记住,默认情况下,node.js服务器不提供任何文件。因此,您希望服务的所有文件都必须专门编码,或者您可以使用一些帮助程序(如Express.static())来提供整个静态文件目录。

另外,socket.io与提供图像文件无关,所以我不清楚为什么要在问题标题中将这两个主题链接在一起。

仅供参考,如果您使用Express框架作为Web服务器,那么您可以使用Express.static()通过一行代码提供整个图像文件目录。有关详细信息,请参阅Express doc