# Server side api consumer

**URL:** <https://www.ruby-forum.com/t/server-side-api-consumer/223460>\
**Category:** IT\
**Created:** [October 5, 2012, 11:27am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460 "2012-10-05T11:27:50Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![aris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/258eb7/32.png) [@aris](https://www.ruby-forum.com/u/aris)\
**Post date:** [October 5, 2012, 11:27am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/1 "2012-10-05T11:27:50Z")

</div>

Cosa usereste per una applicazione che deve consumare principalmente  
delle API esterne e mantenere la connessione aperta con il client?

Ovviamente il classico stack a me caro “nginx + unicorn + background  
jobs” non va bene.

Ho fatto delle cose con Goliath in passato, quindi sarei orientato a  
quello. Meglio che do un’occhiata a Celluloid?

-f

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 11:31am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/2 "2012-10-05T11:31:21Z")

</div>

> Cosa usereste per una applicazione che deve consumare principalmente delle API  
> esterne e mantenere la connessione aperta con il client?

Erlang. O forse Go. O anche Node.js anche se i primi due mi sembrano  
fatti meglio.

> Ovviamente il classico stack a me caro “nginx + unicorn + background jobs” non  
> va bene.
> 
> Ho fatto delle cose con Goliath in passato, quindi sarei orientato a quello.  
> Meglio che do un’occhiata a Celluloid?

Anche quello sembra interessante, anche se l’autore sembra scrivere  
molte cose per poi abbandonarle.

–  
David N. Welton

> **[David N. Welton](https://www.welton.it/davidw/)**

[http://www.dedasys.com/](http://www.dedasys.com/)

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 11:33am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/3 "2012-10-05T11:33:07Z")

</div>

Celluloid/Celluloid.IO/Dcell.  
Noi ci abbiamo costruito un intero framework di telefonia sopra!

Il giorno 05/ott/2012, alle ore 11:31, David W.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 11:38am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/4 "2012-10-05T11:38:23Z")

</div>

non li ho ancora mai usati, ma dalla pagina di Reel sembra che sia  
migliore di Goliath, almeno in performance. Non sono riuscito a capire  
se Reel sia anche RACK-compliant (Goliath si)

Goliath, sembra ricevere pi attenzione (watchers e forks) di Reel.

visto che lo hai gi usato in passato, forse la scelta migliore Goliath

btw l’argomento interessante, in caso tienici aggiornati 😉

A.

Il giorno 05/ott/2012, alle ore 11:27, Fabrizio R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

> [http://lists.ruby-it.org/mailman/listinfo/ml](http://lists.ruby-it.org/mailman/listinfo/ml)  
> [http://andreapavoni.com](http://andreapavoni.com)

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 12:07pm UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/5 "2012-10-05T12:07:02Z")

</div>

Grazie per il consiglio, il progetto pare interessante e lungimirante.  
Poi sono un fan di ZeroMQ.

Non ho capito questa:

> Queste tecniche introducono tonnellate di problematiche di sicurezza che  
> il 99% dei progetti attualmente disponibili non tengono minimamente in  
> considerazione.

Grazie a tutti per le risposte. Penso che dar un’occhiata a Celluloid  
and family prima di decidere.

Framework di telefonia? Vedere, vedere! Di che si tratta?

-f

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 12:12pm UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/6 "2012-10-05T12:12:53Z")

</div>

[http://adhearsion.com/](http://adhearsion.com/)

Si usa per sviluppare applicazioni vocali basate su FreeSWITCH, Asterisk  
e PRISM.  
Mojo Lingo, la ditta per cui lavoro, sviluppa attivamente il framework,  
che open source, e lo usa per sviluppare applicazioni per clienti  
piccoli e grandi.  
L’architettura interna imho piuttosto interessante per chi si approcci  
alla programmazione concorrente, soprattuto le metodologie di test che  
sono differenti e anche piuttosto complesse nell’applicazione (se A fa X  
e B fa Y, non detto che lo facciano nello stesso esatto momento sempre  
se non sono correlati).

Il giorno 05/ott/2012, alle ore 12:06, Fabrizio R.  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) ha scritto:

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 11, 2012, 12:00pm UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/7 "2012-10-11T12:00:12Z")

</div>

Il creatore di Thin ha usato/creato Thin per fare una applicazione di  
chat. Event Machine + Thin + JavaScript puo` fare quello che ti serve.

Celluloid sembra interessante 🙂

---

<div class="post-metadata">

**Author:** ![fregini](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/f/a88e4f/32.png) [@fregini](https://www.ruby-forum.com/u/fregini)\
**Post date:** [October 5, 2012, 11:40am UTC](https://www.ruby-forum.com/t/server-side-api-consumer/223460/8 "2012-10-05T11:40:08Z")

</div>

> 

Prova questo

> **[GitHub - unbit/blastbeat: The BlastBeat server](https://github.com/unbit/blastbeat)**
>
> The BlastBeat server

magari in coppia con eventmachine (c’e’ un esempio nel README)

NOTA:  
e’ un progetto che sto riscrivendo completamente, quindi i commit  
nell’ultimo mese sono stati nulli, ma ci sto investendo parecchio e c’e’  
un buon numero di follower (calcolando che l’ho rilasciato questa  
estate).  
Queste tecniche introducono tonnellate di problematiche di sicurezza che  
il 99% dei progetti attualmente disponibili non tengono minimamente in  
considerazione.

Celluloid non l’ho mai usato, mentre ho avuto occasione di usare nginx +  
goliath e non mi e’ dispiaciuto per niente (ovviamente se non devi usare  
robe moderne tipo websocket e ti limiti a un utilizzo rack-compliant)

Detto questo, ricorda che sviluppare in non-blocking/asincrono non e’  
una  
bazzecola, quindi ti consiglio prima di metterti a tavolino e verificare  
che tutti i componenti dello stack (in particolare l’accesso ai servizi  
esterni come database o cache servers) siano utilizzabili con questo  
paradigma
