2012-03-05 32 views
3

我使用可在nodejs.org網站上下載的.msi包在我的Windows服務器上安裝Node,並且運行良好。然後我跑了npm install socket.io,那也很好。它將socket.io安裝到C:\node_modules\socket.io。我將在socket.io網站上找到的示例服務器代碼添加到名爲app.js的新文件中。我做的唯一更改是端口號爲1337.然後,我使用app.js啓動Node,如下所示:node app.js進入命令行,並獲得info: socket.io started消息。無法獲得基本的socket.io示例在客戶端上工作

在客戶端 - 我的OSX筆記本電腦上,我正在開發我的web應用程序 - 我不確定如何正確獲取socket.io.js文件及其所有依賴項,以便將其包含在我的HTML頁面的<script>標記中。從socket.io Wiki上的How do I serve the client FAQ頁面:

客戶端由Node.JS服務器自動提供。在你的HTML標記的,包括:

<script src="http://<uri:port>/socket.io/socket.io.js"></script> 

所以,我說這我的index.html頁面:

<script src="http://my.windows.server.domain.com:1337/socket.io/socket.io.js"></script> 

當我上傳我的index.html文件到我的網絡服務器,並指向我的瀏覽器,我檢查控制檯,並找到:

XMLHttpRequest cannot load http://localhost/socket.io/1/?t=1330983853883. Origin http://my.web.server.domain.com is not allowed by Access-Control-Allow-Origin.` 

有沒有人遇到此消息與socket.io?關於如何讓客戶端包含它需要的代碼的任何提示,我可以開始使用socket.io的精彩內容了?

回答

1

這是因爲通常XHR不能跨域(並且在升級到socket.io協議之前,初始「握手」通過XHR)。你有沒有使用默認的socket.io設置?嘗試添加:

io.set("origins","*"); 

在您的socket.io服務器設置中。如果這不起作用,那麼也許你使用舊版本的socket.io?我認爲0.9是最新的。

+0

不,沒有觸及默認的socket.io服務器設置。但是,從socket.io網站上的index.html示例代碼,它有這樣一行:'var socket = io.connect('localhost');',所以我意識到我的socket.io服務器是不一樣的作爲我的網絡服務器,例如假設。我把'io.connect('localhost');'改成'io.connect('http://my.windows.server.domain.com:1337');'現在它正在工作。 – ariestav 2012-03-05 22:42:41

+0

哦,我假設你在'io.connect()'中輸入了正確的域名。 :)我很高興它現在適合你。祝NodeJS和socket.io好運! – freakish 2012-03-05 22:46:35