2011-05-04 41 views
0

因此,我正在將Node.js應用程序從本地計算機移動到生產服務器。 Socket.IO(版本0.6.17)似乎在我的服務器上正常工作,但客戶端在嘗試與服務器通信時出錯。Socket.IO客戶端不與服務器通信

下面是一些代碼:

<script src='http://cdn.socket.io/stable/socket.io.js'> 
    // ... 
    var socket = new io.Socket(null, { port: 47556 }).connect(); 
    // ... 
</script> 

這裏就是谷歌Chrome瀏覽器的控制檯輸出每隔幾秒鐘(連續)後:

GET http://mysite.com:47556/socket.io/xhr-polling//1304476733618 undefined (undefined) 

有人提到,這可能是由於之間的版本差異客戶端和socket.io版本,但我不知道如何檢查客戶端版本。

+1

如果您無法從客戶端訪問mysite.com:47556,您的虛擬主機公司是否可以阻止它?你可以從你的服務器訪問該端口嗎? – Detect 2011-05-05 15:33:11

回答

0

原來問題是WebSockets不發送正常的HTTP請求,導致它們被nginx刪除。從我的託管公司Q/A discussion,他們表示解決方案將是購買專門用於偵聽WebSocket連接的私有IP。

儘管我最終用Nodester來承載我的Node.js應用程序。

3

爲了安全起見,我將使用隨服務器一起發佈的socket.io客戶端腳本。將您的腳本標記更改爲引用「/socket.io/socket.io.js」(我認爲)並讓您的應用程序服務它。這也將使Flash Sockets工作,而不必將其置於不安全模式(由於跨域問題)。

+0

該文件存在,我用它,但我仍然有相同的問題。還有什麼想法? – theabraham 2011-05-04 03:15:50

+0

在其他瀏覽器中的行爲是否相同?確定端口號是否正確? – tfe 2011-05-04 03:19:11

+0

樣式表將至少加載Safari和Firefox,但除此之外,我在Firebug中遇到了同樣的錯誤。另外,我在Webfaction的主機上設置了這個參數,並使用了分配的端口「47556」。 – theabraham 2011-05-04 03:21:20