2012-04-27 61 views
1

我正在編寫一個rails應用程序,並且我想使用node.js和socket.io將聊天功能集成到我的應用程序中。我計劃在一臺服務器上部署我的rails應用程序,並將我的聊天部署在更小的服務器上(以節省資金)。我的推理是,如果聊天消息需要30秒才能發送,但是對於一個頁面加載30秒是不好的。如何在rails中提供socket.io客戶端文件

無論如何,爲了這個工作,我需要Rails來服務於socket.io客戶端文件。如果我的小型節點服務器提供客戶端文件,那麼小型服務器將會阻礙較大的服務器。我有一個基本的聊天原型啓動並運行,但它只適用於服務客戶端文件的節點。爲了讓rails提供客戶端文件,我需要做些什麼?

謝謝先進。

回答

1

所以這裏是我決定的解決方案。我決定讓節點服務器處理客戶端JavaScript,而不是搞清楚我需要提供哪些客戶端文件。爲了確保Node服務器不會瓶頸Rails服務器,我懶加載了socket.io-client文件。有關咖啡的腳本是:

$ -> 
    $.getScript('http://localhost:8080/socket.io/socket.io.js') 
    .done (script, textStatus) -> 
     socket = io.connect('http://localhost:8080') 
     setupSocket(socket) 

哪裏http://localhost:8080是您的節點主機/端口。 setupSocket是我編寫的一個函數,用於處理設置所有事件處理程序。

0

很可能你遇到了「同源策略」限制。 (檢查您的控制檯日誌)您的主頁是從RoR主機下載的,因此您的腳本只能啓動與該主機的連接。

換句話說,這可能是不可能的。