我正在尝试使用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)在按照上面的说明提供时不会呈现的原因。
答案 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是如何形成的。也许,这可能会导致问题。