Skip to content

ClojureScript core.async wrapper around WebSocket to communicate via EDN

License

Notifications You must be signed in to change notification settings

loganlinn/cljs-websockets-async

Repository files navigation

cljs-websockets-async

A simple clojure/core.async wrapper around browser WebSocket that communicates via EDN.

channel out  >>(   pr-str    )>> WebSocket send
channel in   <<( read-string )<< WebSocket onmessage

Install

Add to your project.clj:

[cljs-websockets-async "0.1.0-SNAPSHOT"]

Usage

cljs-websockets-async.core/connect! (source) returns a channel that passes a value once the WebSocket connection has been established.

Example:

(ns cljs-websockets-async.example
  (:require [cljs-websockets-async.core :as websocket]
            [cljs.core.async :as async :refer [<! >!]])
  (:require-macros [cljs.core.async.macros :refer [go]]))


;; Open Websocket to server; receive map of chans once connected.

(go
  (let [websock (<! (websocket/connect! "ws://localhost:8080"))]
    (loop []
      (when-let [vs (<! (:in websock))]   ;; Read values
        (>! (:out websock) (map inc vs))  ;; Increment & send back
        (recur)))))

See Also

lynaghk/jetty7-websockets-async provides a similar library for jetty7.

License

Copyright © 2013 Logan Linn

Distributed under the Eclipse Public License either version 1.0 or (at your option) any later version.

About

ClojureScript core.async wrapper around WebSocket to communicate via EDN

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages