Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tuddman/socketcluster-clj
A SocketCluster Client library for Clojure.
https://github.com/tuddman/socketcluster-clj
clojure real-time socketcluster socketcluster-client
Last synced: 2 days ago
JSON representation
A SocketCluster Client library for Clojure.
- Host: GitHub
- URL: https://github.com/tuddman/socketcluster-clj
- Owner: tuddman
- License: epl-2.0
- Created: 2019-06-14T01:36:58.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2019-06-14T03:01:50.000Z (over 5 years ago)
- Last Synced: 2024-10-13T10:05:12.204Z (about 1 month ago)
- Topics: clojure, real-time, socketcluster, socketcluster-client
- Language: Clojure
- Homepage: https://socketcluster.io
- Size: 14.6 KB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# socketcluster-clj
A [SocketCluster](https://socketcluster.io/) Client library for Clojure. This client wraps [socketcluster-client-java](https://github.com/sacOO7/socketcluster-client-java), but where appropriate aims to be more idiomatic and succinct.
[![Clojars Project](https://img.shields.io/clojars/v/tuddman/socketcluster-clj.svg)](https://clojars.org/tuddman/socketcluster-clj)
## Usage
```clojure
lein repl;; define
=> (require '[socketcluster-clj.client :as sc-client])
=> (require '[socketcluster-clj.listeners :as sc-listen])
=> (require '[socketcluster-clj.events :as sc-event])
=> (require '[socketcluster-clj.channels :as sc-ch])
=> (def sc-server-url "ws://localhost:8000/socketcluster/")
=> (def my-socket (sc-client/new-socket sc-server-url)
or
=> (sc-client/set-url my-socket sc-server-url);; set listener(s)
=> (sc-listen/set-listener my-socket);; connect
=> (sc-client/connect my-socket)
;; automatically re-connect
=> (sc-client/set-reconnect-strategy my-socket 2000 30);; send event(s) to the server
=> (sc-event/emit my-socket {"some" "data"});; CHANNELS -
;; subscribe
=> (sc-ch/create-channel my-socket "channel-name")
=> (sc-ch/set-channel-listener my-socket "channel-name" (fn [name data] (print "received on channel => " name "some data => " data)))
=> (sc-ch/subscribe my-socket "channel-name");; publish
=> (sc-ch/publish my-socket "channel-name" {"some" "data"})
```for more, have a look in `src/socketcluster_clj/.clj` to learn what else you can call.
### NPE Issue
if you get the following error when trying to connect:
```bash
Exception in thread "OkHttp Dispatcher" java.lang.NullPointerException
at io.github.sac.Socket$1.onFailure(Socket.java:185)
at okhttp3.internal.ws.RealWebSocket.failWebSocket(RealWebSocket.java:546)
at okhttp3.internal.ws.RealWebSocket$2.onResponse(RealWebSocket.java:206)
```you need to `(sc-listen/set-listener )` **before** connecting.
## License
Copyright © 2019 tuddman
This program and the accompanying materials are made available under the
terms of the Eclipse Public License 2.0 which is available at
http://www.eclipse.org/legal/epl-2.0.This Source Code may also be made available under the following Secondary
Licenses when the conditions for such availability set forth in the Eclipse
Public License, v. 2.0 are satisfied: GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or (at your
option) any later version, with the GNU Classpath Exception which is available
at https://www.gnu.org/software/classpath/license.html.