https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally建议本地服务器提供three.js 示例。python SimpleHTTPServer 对我来说很好,除了我需要在 three.js 存储库克隆中的示例目录上方的目录中运行它。
现在我尝试在 node.js 中使用 httpServer 提供相同的示例。我可以使用 SimpleHTTPServer 的节点版本之一,但我需要一个 httpServer 对象来通过 socket.io 将数据从服务器传递到 webgl 浏览器示例。所以我拿了 socket.io 的例子,并尝试使用上面示例目录中的节点运行以下server.js。
var app = require('http').createServer(handler)
, io = require('socket.io').listen(app)
, fs = require('fs')
app.listen(8080);
function handler (req, res) {
fs.readFile(__dirname + '/examples/webgl_interactive_voxelpainter.html',
function (err, data) {
if (err) {
res.writeHead(500);
return res.end('Error loading html');
}
res.writeHead(200);
res.end(data);
});
}
io.sockets.on('connection', function (socket) {
socket.emit('news', { hello: 'world' });
socket.on('my other event', function (data) {
console.log(data);
});
});
Net 是在 127.0.0.1:8080 和节点上,我看不到three.js 示例。即使我删除了对 socket.io 的所有引用,该代码也不起作用,这表明它与 html 有关。
我错过了什么?正在正确读取 html 文件,因为我没有收到回调错误。
我注意到 python 服务器将目录列为浏览器中的 html 链接。我单击示例以查看 html 文件,然后单击 html 文件,它工作正常。所以我尝试运行'node server.js'一个目录级别,几乎所有正斜杠和反斜杠的组合,根目录引用,......无济于事。
我没有挂断纯httpServer。如果 express 或其他东西适用于 socket.io 和 three.js,我会登上那列火车。