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.