Giter Club home page Giter Club logo

kotlinphoenixchannels's Introduction

Phoenix Channel Client for Java and Android

KotlinPhonixChannels is a Java and Android client library for the Channels API in the Phoenix Framework. Its primary purpose is to ease development of real time messaging apps for Android using an Elixir/Phoenix backend. For more about the Elixir language and the massively scalable and reliable systems you can build with Phoenix, see http://elixir-lang.org and http://www.phoenixframework.org.

Including the Library

  • Add http://dl.bintray.com/eoinsha/java-phoenix-channels as a Maven repository
  • Add KotlinPhonixChannels as an app dependency:
dependencies {
  ...
  compile('com.github.eoinsha:JavaPhoenixChannels:1.0') {
      exclude module: 'groovy-all'
  }

Examples

Example Android App

For a full sample Android chat app, check out the repository at https://github.com/eoinsha/PhoenixChatAndroid

The quick examples below are used with the Phoenix Chat Example

Example using Kotlin

val socket = Socket("ws://localhost:4000/socket/websocket")
socket.connect()

val channel = socket.chan("rooms:lobby", null)
channel.join()
        .receive("ignore") {
            println("IGNORE")
        }
        .receive("ok") { envelope ->
            println("JOINED with $envelope")
        }

channel.on("new:msg") { envelope ->
    println("NEW MESSAGE: $envelope")
}

channel.on(ChannelEvent.CLOSE.phxEvent) { envelope ->
    println("CLOSED: $envelope")
}

channel.on(ChannelEvent.ERROR.phxEvent) { envelope ->
    println("ERROR: $envelope")
}

val payload = JsonPayload().apply {
    put("user", "john")
    put("body", "message")
}
channel.push("new:msg", payload)

// You also can send object as payload
data class Message(val user: String, val message: String)
channel.pushData("new:msg", Message("doe", "hi!"))

Contributing

To contribute, see the contribution guidelines and instructions.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.