Book Image

Learning ClojureScript

By : W. David Jarvis, Allen Rohner
Book Image

Learning ClojureScript

By: W. David Jarvis, Allen Rohner

Overview of this book

Clojure is an expressive language that makes it possible to easily tackle complex software development challenges. Its bias toward interactive development has made it a powerful tool, enabling high developer productivity. In this book, you will first learn how to construct an interactive development experience for ClojureScript.. You will be guided through ClojureScript language concepts, looking at the basics first, then being introduced to advanced concepts such as functional programming or macro writing. After that, we elaborate on the subject of single page web applications, showcasing how to build a simple one, then covering different possible enhancements. We move on to study more advanced ClojureScript concepts, where you will be shown how to address some complex algorithmic cases. Finally, you'll learn about optional type-checking for your programs, how you can write portable code, test it, and put the advanced compilation mode of the Google Closure Compiler to good use.
Table of Contents (15 chapters)
Learning ClojureScript
About the Authors
About the Reviewer

Real-time communication with websockets

WebSockets are a modern browser feature that make it easier and more efficient to work with real-time streaming data, without the hackiness of long-polling HTTP connections.

For this project, we'll use WebSockets to run a bot from Slack. Who doesn't love chatbots? This example might seem slightly contrived, in that a Clojure bot might be easier to deploy and run, but there are a few legitimate uses for this such as, creating a specialized Slack UI or piping user communication from your website into Slack. Another advantage of using Slack here means we won't have to set up the server side of this real-time chat client.

You'll need to set up a Slack ( account if you don't have one already, but it's free.

Understanding the websocket protocol

WebSockets are a separate protocol from HTTP; they too happen to run on TCP port  80. WebSockets provide bidirectional messages with lower overhead than HTTP-based hacks, such as long polling or Bidirectional...