2012-09-20 87 views
3

https://github.com/mrdoob/three.js/wiki/How-to-run-things-locally表明three.js示例由本地服務器提供。 python SimpleHTTPServer對我來說工作正常,除了我需要在three.js存儲庫克隆中的示例目錄上方的目錄中運行它。httpServer在node.js中服務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); 
    }); 
}); 

網絡是在127.0.0.1:8080與節點我看不到three.js示例。即使我刪除了所有對socket.io的引用,代碼也不起作用,表明它是關於html的。

  1. 我在想什麼? HTML文件正在被正確讀取,因爲我沒有收到回調錯誤。

  2. 我注意到python服務器在瀏覽器中列出目錄爲html鏈接。我點擊例子來查看html文件,然後點擊html文件,它工作正常。所以我嘗試運行'node server.js'一個目錄級別,幾乎每個組合的前進和後退斜槓,根目錄引用......都無濟於事。

  3. 我沒有掛在純粹的httpServer上。如果快遞或其他東西適用於socket.io和three.js,我會登上那列火車。

回答