socket.io 图片目录不工作

socket.io image directory not working

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

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

当我访问图像目录中的某个图像文件时,它没有向我显示图像。如何实现?如果我尝试任何地址,总会有 index.html.

的内容

您的 node.js 服务器 hard-coded 仅 return 一个文件 index.html,无论浏览器请求的是什么文件。因此,当浏览器请求可能在 index.html 中引用的图像时,您的代码将再次发送回 index.html

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

另外,socket.io 与提供图像文件没有任何关系,所以我不清楚您为什么在问题标题中将这两个主题联系在一起。


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