2012-05-12 57 views
4

我試圖在我的freebsd服務器上運行node.js應用程序,但我無法獲取socket.io庫以使用它。我試過,包括:Node.js socket.io.js未找到或io未定義

<script src="/socket.io/socket.io.js"></script> 

其中給出一個404錯誤,如果我直接鏈接到文件(即它是在我的public_html文件夾中)我得到的IO沒有定義的錯誤。

在此先感謝

回答

10

嘗試創建中有這樣一行另一個Node.js應用程式,然後用節點運行它。 js

var io = require('socket.io').listen(8000); 

然後在您的瀏覽器訪問http://127.0.0.1:8000,你應該得到友好的「歡迎來到socket.io。「問候。如果你得到這個,那麼socket.io正在運行,並且將服務於socket.io.js文件。

我能想到的唯一可能發生的事情是,您可能無法鏈接到客戶端文件中的備用端口。除非你運行的是在端口80上運行,現在創建一個具有socket.io設置腳本源

<script src="http://127.0.0.1:8000/socket.io/socket.io.js"> </script> 

客戶端文件上明示的socket.io服務器這應該連接到插座。在端口8000上運行的io服務器並獲取socket.io.js文件。

+0

謝謝,這沒有發生,我會看到修復它。 –

+0

我很困惑。我遇到了同樣的問題,而且確實有效,所以我絕對想在不運行單獨的服務器的情況下修復它。 「我可以想到的唯一可能是你可能沒有鏈接到你的客戶端文件中的備用端口」你是什麼意思,我在端口3200上使用express,有沒有什麼特別的我必須使用socket.io來爲端口3200上的客戶端js文件服務? –

3

你的Node.js應用程序仍必須服務於它 - 它不會自動地提供服務。你有什麼服務器?它應該是類似於

var app = require('express').createServer();          
var io = require('socket.io').listen(app); 

或類似的(listen是重要的)。據我所知,該位置不是磁盤上的真實位置 - socket.io庫應攔截URL併爲其客戶端庫提供服務。

+0

我已經有這兩行了,但是謝謝 –

0

添加了以下機身分析器之後:

, express.static(__dirname + "/public") 

因此,像:

var app = module.exports = express.createServer(
    express.bodyParser() 
    , express.static(__dirname + "/public") 
);