• Stars
    star
    126
  • Rank 284,543 (Top 6 %)
  • Language
    Swift
  • License
    MIT License
  • Created over 8 years ago
  • Updated about 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🐦🎼 Swift WebSockets client for Phoenix Channels.

Birdsong: Phoenix Channels WebSockets client for iOS & OS X

Birdsong

An iOS & OS X WebSockets client for use with Phoenix Channels. Supports Phoenix Presence!

As of version 0.3.0, Birdsong requires Swift 3.0+. Please use version 0.2.2 if you need Swift 2.2 support.

Version 0.6 onwards supports Swift 4 using Starscream 3.0.

Usage

import Birdsong

…

// In your view controller / client
let socket = Socket(url: NSURL(string: "http://localhost:4000/socket/websocket")!, params: ["key": "secret"])

…

socket.onConnect = {
    let channel = self.socket.channel("rooms:some-topic", payload: ["user": "spartacus"])
    channel.on("new:msg", callback: { message in
        print("New message: \(message)")
    })

    channel.join()?.receive("ok", callback: { payload in
        print("Successfully joined: \(channel.topic)")
    })

    channel.send("new:msg", payload: ["body": "Hello!"])
        .receive("ok", callback: { response in
            print("Sent a message!")
        })
        .receive("error", callback: { reason in
            print("Message didn't send: \(reason)")
        })

    // Presence support.
    channel.presence.onStateChange = { newState in
        // newState = dict where key = unique ID, value = array of metas.
        print("New presence state: \(newState)")
    }

    channel.presence.onJoin = { id, meta in
        print("Join: user with id \(id) with meta entry: \(meta)")
    }

    channel.presence.onLeave = { id, meta in
        print("Leave: user with id \(id) with meta entry: \(meta)")
    }
}

socket.connect()

Example

To run the example project, clone the repo, and run pod install from the Example directory first, then use the Birdsong.xcworkspace Xcode workspace. The example is configured to work directly with the Phoenix Chat Example. It simply connects to localhost:4000, joins the rooms:lobby channel, and logs each received message. The β€œSend message” button will send a message to the channel with an incrementing count.

Installation

Available on CocoaPods:

platform :ios, '9.0'
use_frameworks!

pod 'Birdsong', '~> 0.6'

If you need Swift 2.2 compatibility, please use version 0.2.2.

Author

Simon Manning β€” sjrmanning@github

License

Birdsong is available under the MIT license. See the LICENSE file for more info.