2

我正在尝试通过带有 socket.io 的 [Node] http 服务器提供此处找到的示例。

该示例运行得很好。

下面的代码...

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 都运行良好,除非我添加了三个.js 代码并尝试提供该示例(作为 index.html)。3D 场景外,一切都正常运行。

以这种方式提供three.js 代码导致其崩溃的原因是什么?为什么除此之外一切正常?

非常感谢任何帮助。谢谢你。

注意:尽管这个问题很相似,但答案确实说明了为什么 WebGL(通过three.js)在如上所述提供服务时不会呈现。

4

1 回答 1

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 是如何出现的。所以也许,它正在引起问题。

于 2013-05-26T17:33:41.610 回答