2012-04-27 46 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主机下载的,因此您的脚本只能启动与该主机的连接。

换句话说,这可能是不可能的。