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.
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()
To run the example project, clone the repo, and run pod install
from the Example directory first.
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
.
Simon Manning — sjrmanning@github
Birdsong is available under the MIT license. See the LICENSE file for more info.