Hacker News new | ask | show | jobs
by aredington 4836 days ago
full disclosure: I'm a Relevance employee and have been working on this a great deal.

Pedestal provides a few distinguishing values in this space overall:

- Same language on the client and on the server. You can get this with something running on the native OS in both locations, or with javascript and node, or with clojurescript and clojure. ClojureScript and Clojure can sit on top of the browser platform like javascript. We're opinionated and would rather solve problems with Clojure than with Javascript.

- A server-initiated communication mechanism that can send data to those clients without parking a thread or process in order to maintain all the information for managing the communication. Our Server Sent Events mechanism lets clients initiate HTTP connections to the server and hold the connection open. On the server side, we can park those connections without eating a thread to do it, and pick up the connections to send new data down to clients as appropriate.

- A pretty powerful set of libraries for developing client applications in ClojureScript. The libraries let you isolate the scope of change to HTML document trees so that changes to underlying data reflect small changes up to the presentation layer. This foundation has created lots of interesting abilities, like being able to record a set of interactions and replay them with a new presentation layer, or being able to replay specific sets of data being sent from the server to clients.

There's a lot more that we've built up, based on our experiences trying to solve problems for people in Clojure, but I think these are three things we do that deserve giving us some of your time for evaluation.

1 comments

Regarding client-server communication, are you using an existing library (socket.io, sockjs, etc) for the client->server communication, did you roll your own, or is this an "exercise left to the reader"?
Communication happens over HTTP at the wire level, and we use the Server Sent Events standard (http://en.wikipedia.org/wiki/Server-sent_events), and particularly browsers' EventSource implementations as the foundation on the client side.

Pedestal Services have a balled up implementation that transmits the data from the server side.