Pracuję z XMPP i mam wywołanie zwrotne, które jest aktywowane w przypadku każdej wysyłanej wiadomości. Moim celem jest wysłanie danych przychodzących przez wiadomość do API w ramach wywołania zwrotnego i na podstawie odpowiedzi wysłać coś za pomocą klienta XMPP.Asynchroniczne metody wywoływania z Ruby jak z Ajaxem
- Typ użytkownika wiadomość (Przeglądarka Chat Client)
- wiadomość dotrze do serwera poprzez XMPP
- wiadomość zostanie wysłana do API
- Response otrzymania
- odpowiedź jest odsyłany do klienta czatu .
Mój kod to następująco
admin_muc_client.activate_message_callbacks do |m|
sender = m.from.resource
room_slug = m.from.node
message = m.body
r = HTTParty.get('http://example.com/api/v1/query?msg=message')
Rails.logger.debug(r.inspect)
admin_muc_client.send_message("Message #{r.body}") if m.from.resource != 'admin'
end
Moim problemem jest to, że ponieważ zwrotna jest i walczył, a wniosek do API byłoby wywołanie blokowanie to może stać się wąskim gardłem dla całej aplikacji . Wolałbym użyć czegoś takiego jak AJAX dla Javascript, który wystrzeliłby żądanie i kiedy odpowiedź jest dostępna wysyłać dane. Jak mogę to zaimplementować w Ruby?
Spojrzałem na delayed_job i backgroundrb, które wyglądają jak narzędzia do operacji ognia i zapomnienia. Potrzebowałbym czegoś, co aktywuje wywołanie zwrotne w sposób asynchroniczny z odpowiedzią.
Naprawdę bardzo doceniam pomoc w uzyskaniu asynchronicznego zachowania, które chcę. Jestem również zaznajomiony z kolejkami komunikatów, takimi jak RabbitMQ, który moim zdaniem byłby dodatkiem o znacznej złożoności.
Niesamowite da to strzał. Może to jest to. – Sid
To, co znajduję, działa w konsoli, ale nie dodaje zadania do kolejki po uruchomieniu w aplikacji w trybie programowania. BTW Prowadzę pasażera i apache'a w trybie deweloperskim. – Sid