Может ли сокетстрим действовать на ss.event.on на сервере?

Я публикую сообщения на сервере Redis с системой Pub/Sub. Я использую Socketstream 0.3 с node.js для прослушивания и обработки этих сообщений. В коде клиента (app.js) я могу нормально обрабатывать эти сообщения, используя ss.event.on:

ss.event.on "portux", (object) ->
  # Handle messages of the type Switch 3 true (to switch 3 on) or Switch 2 false
  if object.type is "Switch" 
  sw = object.location
  # the cmd is now in the quantity field
  cmd = object.quantity
  if object.value then cmd += 'On;' else cmd += 'Off;'
  send cmd

Однако в отношении некоторых из этих сообщений я также хочу, чтобы система работала, даже если браузер не обращается к веб-сайту. Другими словами, я бы хотел, чтобы он был либо в app.js (или app.coffee) в корне, либо в server/rpc, чтобы он выполнялся всякий раз, когда приходит сообщение, независимо от браузера, открывшего веб-сайт.

Когда я пытаюсь это сделать, я получаю сообщение об ошибке на ss.event.on (объект не определен). Я также попытался использовать ss.api.event.on, но похоже, что сообщения могут быть получены только в коде клиента. Это правда? Есть ли другой способ добиться того, чего я хочу?

Питер

1 ответ

Если вы находитесь на сервере, вы можете просто вызвать функцию непосредственно из того же места, где происходит событие.

Если вы привержены семантической парадигме событий, вы можете оформить название (функций и т. Д.) В стиле события.
Вы также можете покопаться в библиотеке Node's event-emmiter и настроить что-то таким образом.

Это все только в том случае, если вы хотите тратить свое время таким образом, придерживаясь строго ориентированной на события парадигмы для организации программы.

Самое простое, как упомянул комментатор Дейф, просто вызвать функцию напрямую. С того же места вы (могли бы) вызвать событие.

Другие вопросы по тегам