Может ли сокетстрим действовать на 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 и настроить что-то таким образом.
Это все только в том случае, если вы хотите тратить свое время таким образом, придерживаясь строго ориентированной на события парадигмы для организации программы.
Самое простое, как упомянул комментатор Дейф, просто вызвать функцию напрямую. С того же места вы (могли бы) вызвать событие.