【问题标题】:How to structure communication between Nodejs server and rails?如何构建 Nodejs 服务器和 Rails 之间的通信?
【发布时间】:2012-03-10 07:13:36
【问题描述】:

我目前正在使用 rails 来提供静态网页,并且我正在尝试使用 NodeJs 来处理我的应用程序的一些实时方面。

我已经能够在 Nodejs 与我的 Rails 服务器之间进行单向通信,方法是让 Nodejs 写入数据库并让我的 Rails 服务器读取它。

现在我想换一种方式,也就是 Rails 中的动作将触发 Nodejs 中的动作。显然我可能很笨,并且有一个节点不断地轮询数据库服务器。

我有哪些选择?

  1. 在两者之间设置 RPC 调用
  2. 双向设置 TCP 套接字

有更简单/更快的选择吗?

【问题讨论】:

    标签: ruby-on-rails node.js ipc rpc


    【解决方案1】:

    从技术上讲,inter process communication 有很多方法,如果你想要一些简单的东西,我相信你应该看看dnode,它在 TCP 或命名管道上提供 RPC,它有一个ruby implementation。使您进行 RPC 调用变得非常容易,并且由于它是 TCP,您可以跨机器使用它。

    您也可以有一个消息队列,例如zeromq,但我相信这会产生不必要的开销。如果您有两个以上的进程相互交谈,这将是一件好事。

    除了所有这些,如果你想要最小的延迟,如果你的进程都在一台机器上运行,我相信你应该使用命名管道和 stdio 进行通信,但我不知道节点中的任何模块会帮助您抽象它,您必须在 stdio 上构建自己的 RPC 模块。

    【讨论】:

    • 除此之外,如果您想要一个必须与语言无关的生态系统,请考虑 zeromq - 用不同语言编写的不同进程将通过标准化协议相互通信。这就是 zeromq 可以提供的——简化通信层,让进程之间的通信变得非常容易。
    【解决方案2】:

    如果你用的是redis,我最近写了一个redis_message_capsule:

    这样做。随意尝试或修改它。

    【讨论】:

    • +1 这是一个非常巧妙的解决方案。感谢您的出色工作。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    • 2022-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多