Skip to content

Repository files navigation

JavaPhoenixClient

Maven CentralBuild Statuscodecov

JavaPhoenixClient is a Kotlin implementation of the phoenix.js client used to manage Phoenix channels.

Basic Usage

funconnectToChatRoom() {
// Create the Socketval params = hashMapOf("token" to "abc123")
val socket =Socket("http://localhost:4000/socket/websocket", params)
// Listen to events on the Socket
socket.logger = { Log.d("TAG", it) }
socket.onOpen { Log.d("TAG", "Socket Opened") }
socket.onClose { Log.d("TAG", "Socket Closed") }
socket.onError { throwable, response ->Log.d(throwable, "TAG", "Socket Error ${response?.code}") }
socket.connect()
// Join channels and listen to eventsval chatroom = socket.channel("chatroom:general")
chatroom.on("new_message") { message ->val payload = message.payload
...
}
chatroom.join()
.receive("ok") { /* Joined the chatroom */ }
.receive("error") { /* failed to join the chatroom */ }
}

If you need to provide dynamic parameters that can change between calls to connect(), then you can pass a closure to the constructor

// Create the Socketvar authToken ="abc"val socket =Socket("http://localhost:4000/socket/websocket", { mapOf("token" to authToken) })
// Connect with query parameters "?token=abc"
socket.connect()
// later in time, connect with query parameters "?token=xyz"
authToken ="xyz"
socket.connect() // or internal reconnect logic kicks in

You can also inject your own OkHttp Client into the Socket to provide your own configuration

// Configure your own OkHttp Clientval client =OkHttpClient.Builder()
.connectTimeout(1000, TimeUnit.MILLISECONDS)
.build()
// Create Socket with your custom instancesval params = hashMapOf("token" to "abc123")
val socket =Socket("http://localhost:4000/socket/websocket",
params,
client)

By default, the client use GSON to encode and decode JSON. If you prefer to manage this yourself, you can provide custom encode/decode functions in the Socket constructor.

// Configure your own GSON instanceval gson =Gson.Builder().create()
val encoder:EncodeClosure= {
// Encode a Map into JSON using your custom GSON instance or another JSON library// of your choice (Moshi, etc)
}
val decoder:DecodeClosure= {
// Decode a JSON String into a `Message` object using your custom JSON library 
}
// Create Socket with your custom instancesval params = hashMapOf("token" to "abc123")
val socket =Socket("http://localhost:4000/socket/websocket",
params,
encoder,
decoder)

Installation

JavaPhoenixClient is hosted on MavenCentral. You'll need to make sure you declare mavenCentral() as one of your repositories

repositories {
mavenCentral()
}

and then add the library. See releases for the latest version

dependencies {
implementation 'com.github.dsrees:JavaPhoenixClient:1.3.1'
}

Feedback

Please submit in issue if you have any problems or questions! PRs are also welcome.

This library is built to mirror the phoenix.js and SwiftPhoenixClient libraries.

About

Phoenix client for the JVM built with Kotlin

Topics

Resources

Stars

73 stars

Watchers

6 watching

Forks

Releases

Packages

Used by

Contributors

Languages