Как структурировать связь между сервером Nodejs и рельсами? - PullRequest
5 голосов
/ 20 февраля 2012

В настоящее время я использую рельсы для обслуживания статических веб-страниц, и я экспериментирую с NodeJ для обработки некоторых аспектов моего приложения в реальном времени.

Мне удалось установить одностороннюю связь между Nodejs и моим Rails-сервером, когда Nodejs записывал в базу данных, а мой rails-сервер считывал с нее.

Теперь я хочу сделать другой путь, иначе действие в Rails вызовет действие в Nodejs.Очевидно, что я могу быть глупым и иметь узел, постоянно опрашивающий сервер базы данных.

Какие у меня варианты?

  1. Настройка вызовов RPC между обоими
  2. Настройка сокета TCP в обоих направлениях

Существуют ли более простые / быстрые варианты?

Ответы [ 2 ]

3 голосов
/ 30 ноября 2012

Если вы используете redis, я недавно написал redis_message_capsule:

, чтобы сделать это.Не стесняйтесь попробовать или изменить его, как вам нравится.

3 голосов
/ 20 февраля 2012

Ну, технически у вас есть много способов для межпроцессного взаимодействия , если вы хотите чего-то простого, я думаю, вам следует взглянуть на dnode , который предоставляет RPC по TCP или по именованным каналам и имеет реализацию ruby ​​. Вы можете легко выполнять вызовы RPC, и, поскольку это TCP, вы можете использовать его на разных компьютерах.

У вас также может быть очередь сообщений, такая как zeromq , но я считаю, что это приведет к ненужным накладным расходам. Было бы хорошо, если бы у вас было более двух процессов, говорящих друг с другом.

Помимо всего этого, если вы хотите минимальную задержку, если ваши процессы выполняются на одной машине, я считаю, что вы должны использовать именованный канал и stdio для связи, но я не знаю ни одного модуля в узле, который будет поможет вам абстрагироваться от этого, и вы должны создать свой собственный RPC-модуль на stdio.

...