J'ai simple point final POST raisin avec Wisper pub/sous en arrière-plan:Wisper et raisin résultats de retour d'une requête POST
module Something
class Doit < Grape::API
post :now do
service = SomePub.new
service.subscribe(SomeSub.new)
service.call(params)
end
end
end
Voici le SomeSub
où en fait les calculs Happens:
class SomeSub
def do_calculations(payload)
{result: "42"}.to_json
end
end
SomePub
est tout aussi simple:
class SomePub
include Wisper::Publisher
def call(payload)
broadcast(:do_calculations, payload)
end
end
Donc, ce dont j'ai besoin est pour répondre avec le JSON {result: "42"}
, lors de l'appel du point de terminaison post :now
de Grape.
Malheureusement, il ne fonctionne pas de cette façon, et ce que j'ai est:
{"local_registrations":[{"listener":{},"on":{},"with":null,"prefix":"","allowed_classes":[],"broadcaster":{}}]}
Cet exemple de wiki de Wisper ne vous aide pas trop (https://github.com/krisleech/wisper/wiki/Grape)
Toute idée comment passer réellement SomePub#do_calculations
résultats, à la suite de l'appel de point de terminaison de Grape?
Peut-être pub/sous est approprite pas pour cette édition est depuis tirer et oublier, il n'y a pas de valeur de retour. Je suggère au service de renvoyer une valeur qui est ensuite transformée en JSON, par ex. 'MyJSONSerializer.new (MyService.call (params))' – Kris
En fait, cela * est * feu et oublier, et je suis juste en train de déclencher un même invoquer des calculs –
Dans la question, vous dites que vous devez répondre à la poste avec le résultat de l'abonné, suis-je mal interprété? – Kris