服务three.js?

时间:2013-05-26 01:59:56

标签: node.js socket.io three.js webgl

我正在尝试使用socket.io在[Node] http服务器上发现here示例。

示例运行得很好。

以下代码......

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

app.listen(8086);

function handler (req, res) {
  fs.readFile(__dirname + '/spinnycube.html',
  function (err, data) {
    if (err) {
      res.writeHead(500);
      return res.end('Error loading spinnycube.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);
  });
});

...就是我用来为页面提供服务的index.html。我选择了端口8086,因为它未被使用;它与这个和任何其他端口号没有区别。

该示例本身运行正常,并且以这种方式提供的任何index.html都运行良好,除非我添加了three.js代码并尝试提供示例(作为index.html)。除了 3D场景外,所有内容都会得到服务并正常运行

以这种方式提供three.js代码是什么让它崩溃?除了那之外,为什么一切都有效?

任何帮助非常赞赏。谢谢。

注意:尽管this问题类似,但答案确实说明了为什么WebGL(通过three.js)在按照上面的说明提供时不会呈现的原因。

1 个答案:

答案 0 :(得分:1)

我尝试提供示例页面。您必须更改页面中的某些链接才能使其正常工作。喜欢改变

<script src="../build/three.min.js"></script>

<script src="http://threejs.org/build/three.min.js"></script>

loadTexture( 'textures/cube/skybox/px.jpg' ), // right
...
loadTexture( 'textures/cube/skybox/nz.jpg' )  // front

loadTexture( 'http://threejs.org/examples/textures/cube/skybox/px.jpg' ), // right
...
loadTexture( 'http://threejs.org/examples/textures/cube/skybox/nz.jpg' )  // front

页面加载完美,three.js代码也可以。 我不明白socket.io是如何形成的。也许,这可能会导致问题。