如何在rails中提供socket.io客户端文件

时间:2012-04-27 02:22:54

标签: ruby-on-rails ruby-on-rails-3 node.js socket.io

我正在编写一个rails应用程序,我想使用node.js和socket.io将聊天功能集成到我的应用程序中。我计划在一台服务器上部署我的rails应用程序,并将我的聊天部署在一个小得多的服务器上(以节省资金)。我的理由是,如果聊天消息需要30秒才能发送,这是可以的,但是页面加载30秒是不行的。

无论如何,为了使其工作,我需要Rails来服务socket.io客户端文件。如果我的小型节点服务器提供客户端文件,那么小型服务器将成为较大的服务器瓶颈。我有一个基本的聊天原型启动并运行,但它只适用于为客户端文件提供服务的节点。为了让rails提供客户端文件,我该怎么做?

先谢谢了。

2 个答案:

答案 0 :(得分:1)

所以这是我决定的解决方案。我决定让Node服务器处理客户端javascript,而不是弄清楚我需要提供哪些客户端文件。为了确保节点服务器不会阻塞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是我编写的一个函数,用于处理所有事件处理程序的设置。

答案 1 :(得分:0)

很可能您遇到了“同源策略”限制。 (检查控制台日志)您的主页面是从RoR主机下载的,因此您的脚本只能启动与该主机的连接。

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