Latest 1.2.0
License MIT
Platforms ios 9.0
Dependencies Starscream

Phoenix Swift Client

A Swift library for communicating with Phoenix Channels. Based on the latest
version of the Javascript library :rocket:



Add PhoenixSwiftClient to your Podfile. Note that this library only supports
iOS 9.0 and higher.

Git Submodule

Fetch the library from Git and add PhoenixSwiftClient.xcodeproj to your XCode
project. Then, in your project’s settings, add PhoenixSwiftClient.framework
under General -> Embedded Binaries.


PhoenixSwiftClient is based on the current Phoenix 1.2.1 JS client, so the
patterns are largely the same. There is also a sample project set up
PhoenixSwiftClientExample folder.

First import the library.

import PhoenixSwiftClient


To create a socket connection, create an URL object with the URL string you
want to connect to.

let url = URL(string: "ws://localhost:4000/socket")
conn = Socket(endpointUrl: url!, options: [:])

If your Phoenix channels endpoint requires parameters (i.e. for authentication),
you may pass that in through the options parameter.

let params = ["join": "params"]
conn = Socket(endpointUrl: url!, options: ["params": params])

Socket Hooks

You may hook into lifecycle events such as onError and onClose from the

socket.onError(callback: { (error: Error) -> () in


Once you have a socket, you can start listening on channels. To connect to the
channel, you must provide the topic to subscribe to along with any necessary

channel = "room:lobby", chanParams: ["foo": "bar"])
channel.join(timeout: nil)

Once you have a Channel object, you may start listening or pushing events.

channel.on(event: "ping", callback: { (payload: Any?, ref: Int?) -> () in
  print("got ping!")

channel.push(event: "pong", payload: ["foo": "bar"], timeout: nil)?.receive(status: "ok", callback: { (payload: [String: AnyObject]?) -> () in
  print("Received reply")


The Presence object provides features for syncing presence information from the
server. Use syncState and syncDiff to process incoming events.

Latest podspec

    "name": "PhoenixSwiftClient",
    "version": "1.2.0",
    "summary": "Swift library for connecting to Phoenix channels.",
    "description": "Swift library for connecting to Phoenix channels.",
    "homepage": "",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    "authors": {
        "George Lee": "[email protected]"
    "source": {
        "git": "",
        "tag": "1.2.0"
    "platforms": {
        "ios": "9.0"
    "source_files": "PhoenixSwiftClient/**/*",
    "dependencies": {
        "Starscream": [
            "~> 2.0.2"
    "pushed_with_swift_version": "3.0"

Pin It on Pinterest

Share This