1

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

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

先谢谢了。

4

2 回答 2

1

所以这是我决定的解决方案。我决定让 Node 服务器处理客户端 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 是我编写的用于处理设置所有事件处理程序的函数。

于 2012-04-29T19:37:45.450 回答
0

Most probably you are running into the "Same Origin Policy" restriction. (Check your console log) Your main page is downloaded from the RoR host, so your scripts can only initiate a connection to that host.

In other words, this may not be possible.

于 2012-04-27T06:30:47.110 回答