2012-06-05 11 views
6

Basta guardare Haskell e i framework Web e chiedersi se avrebbe senso usare la grande funzionalità di threading/evento di Haskell per alimentare una piattaforma per scrivere applicazioni HTML5 e REST che espongono un'API HTTP per dati e un WebSocket (con forse il supporto SockJS per appropriato fallback) API per eventi? Non sembra che i "grandi" framework web supportino WebSockets come un cittadino di prima classe, anche se sembrano avere molte altre cose che vanno per loro.Quale framework web Haskell si userebbe per una piattaforma di dati e di messaggistica HTTP/Websocket?

La mia preoccupazione è fare uso di core disponibili, che Haskell può fare bene, ma anche fornire una facile integrazione utente sul lato server per la convalida e logica lato server (magari incorporando Lua o simili?). Se uno ha scritto questo sulla JVM, si potrebbe fare uso di più supporto per le lingue sul lato server e molte librerie per questo genere di cose.

Sono sicuro che le persone stiano facendo cose del genere in una soluzione una tantum per le proprie applicazioni, ma sto pensando sulla falsariga di un approccio di tipo PaaS in cui si possono scrivere app HTML5 con dati (inclusa la sincronizzazione corretta per l'utilizzo offline) e l'eventualità di "gratuitamente" come parte fondamentale della piattaforma. La maggior parte della logica risiede nel browser, ma alcuni potrebbero essere eseguiti sul server con gli hook appropriati e una ragionevole incorporabilità (JavaScript sembra fuori discussione e non è sicuro di incorporare gli interpreti in Haskell dato che conosco pericolosamente Haskell in generale) .

Parte del problema che ho avuto con Haskell finora è che non sono un ragazzo di matematica. Non ho studiato CS al college e sono un pensatore di tipo creativo. Quindi molte esercitazioni e documentazione mi fanno perdere la testa, specialmente quando si tratta di argomenti matematici.

Qualcuno ha già percorso questo percorso? Sono in ritardo per la festa? :)

+1

Hai guardato Yesod e Snap? Entrambi supportano WebSockets ... e sembra che qualcuno stia lavorando anche sul supporto di SockJS: https://github.com/bitonic/sockjs-haskell –

risposta

1

Credo che tutti i principali framework abbiano un certo livello di supporto per websockets, quindi dovrebbero essere tutti una scelta giusta in base alle proprie esigenze. Per Yesod, c'è un esempio di creazione di un sistema di chat (usando EventSource, non WebSockets) disponibili nel libro:

http://www.yesodweb.com/book/wiki-chat-example

+0

A dire il vero, mi piace un po 'Yesod. Sembra abbastanza veloce se si vuole credere ai parametri di riferimento. :) Mentre la fonte di eventi potrebbe funzionare bene, sono davvero alla ricerca di websocket o preferibilmente di SockJS (che include il supporto di fallback). –

+0

hai scritto un tutorial su Warp da qualche parte? Non sono stato in grado di trovare molto sulla documentazione diretta su come usare Warp per scrivere un'app REST. Una specie di tipo "ordito per inventori" ... –

+0

Il più vicino è il README.md per WAI: https://github.com/yesodweb/wai/blob/master/wai/README.md. Non ci sono molte persone che scrivono app web direttamente contro WAI (anche se alcune esistono). –

4

Gregory Collins ha dato un tutorial at CUFP last year sull'utilizzo Snap per costruire un sito web chat interattiva utilizzando polling lungo (non websockets). Il codice sorgente è here.

Nel reparto websocket, Jasper Van der Jeugt ha scritto un Haskell websockets library. È disponibile su hackage e viene fornito con websockets-snap, che fornisce supporto per framework Snap. C'è anche wai-websockets che fornisce l'integrazione con Warp.

+0

Ho notato che la libreria di hackage non era sicura della sua qualità di produzione e della sua integrazione con Snap. Speravo davvero di trovare qualcosa che fosse un vero cittadino di prima classe di un framework web e non un'aggiunta che forse funziona ma non fornisce una buona integrazione.Detto questo, darò un'occhiata più da vicino a Snap e Websocket (di nuovo). –

+0

Ho discusso [qui] (http://stackoverflow.com/questions/5645168/comparing-haskells-snap-and-yesod-web-frameworks/5650715#5650715) e [qui] (http: //softwaresimply.blogspot. com/2012/04/hopefully-fair-and-useful-comparison-of.html) come i framework web Haskell sono molto modulari e intercambiabili, e direi che questa tendenza si estende alla libreria websockets e oltre. Penso che siano le capacità di astrazione estremamente elevate di Haskell a facilitarla in misura maggiore rispetto alla stragrande maggioranza delle altre lingue. Probabilmente non avrai bisogno di cose da cuocere quanto sei abituato. – mightybyte

Problemi correlati