Skip to content
Swift Client Library for the Faye Pub-Sub messaging server (
Branch: master
Clone or download


Join the chat at


A simple Swift client library for the Faye publish-subscribe messaging server. FayeObjC is implemented atop the Starscream Swift web socket library and will work on both Mac (pending Xcode 6 Swift update) and iPhone projects.

It was heavily inspired by the Objective-C client found here: FayeObjc

Note: For Swift 2.2 please use FayeSwift 0.2.0



FayeSwift is available through CocoaPods. To install it, simply add the following line to your Podfile:

  pod "FayeSwift"

Swift Package Manager compatability is coming sson

Initializing Client

You can open a connection to your faye server. Note that client is probably best as a property, so your delegate can stick around. You can initiate a client with a subscription to a specific channel.

client = FayeClient(aFayeURLString: "ws://localhost:5222/faye", channel: "/cool")
client.delegate = self

You can then also subscribe to additional channels either with block handlers like so:

let channelBlock:ChannelSubscriptionBlock = {(messageDict) -> Void in
  let text: AnyObject? = messageDict["text"]
  println("Here is the Block message: \(text)")
client.subscribeToChannel("/awesome", block: channelBlock)

or without them letting the delegate handle them like so:


After you are connected, there are some optional delegate methods that we can implement.


connectedToServer is called as soon as the client connects to the Faye server.

func connectedToServer(client: FayeClient) {
   println("Connected to Faye server")


connectionFailed is called when a cleint fails to connect to Faye server either initially or on a retry.

func connectionFailed(client: FayeClient) {
   println("Failed to connect to Faye server!")


disconnectedFromServer is called as soon as the client is disconnected from the server..

func disconnectedFromServer(client: FayeClient) {
   println("Disconnected from Faye server")


didSubscribeToChannel is called when the subscribes to a Faye channel.

func didSubscribeToChannel(client: FayeClient, channel: String) {
   println("subscribed to channel \(channel)")


didUnsubscribeFromChannel is called when the client unsubscribes to a Faye channel.

func didUnsubscribeFromChannel(client: FayeClient, channel: String) {
   println("UNsubscribed from channel \(channel)")


The subscriptionFailedWithError method is called when the client fails to subscribe to a Faye channel.

func subscriptionFailedWithError(client: FayeClient, error: subscriptionError) {
   println("SUBSCRIPTION FAILED!!!!")


The messageReceived is called when the client receives a message from any Faye channel that it is subscribed to.

func messageReceived(client: FayeClient, messageDict: NSDictionary, channel: String) {
   let text: AnyObject? = messageDict["text"]
   println("Here is the message: \(text)")

The delegate methods give you a simple way to handle data from the server, but how do you publish data to a Faye channel?


You can call sendMessage to send a dictionary object to a channel

client.sendMessage(["text": textField.text], channel: "/cool")

Example Server

There is a sample faye server using the NodeJS Faye library. If you have NodeJS installed just run the following commands to install the package:

npm install

And then you can start the Faye server like so:

node faye_server.js

Example Project

Check out the FayeSwiftDemo project to see how to setup a simple connection to a Faye server.


FayeSwift requires at least iOS 7/OSX 10.10 or above.


  • Cocoapods Integration
  • Add block handlers
  • Complete Docs
  • Add Unit Tests
  • Swift Package Mananger Support
  • Rethink use of optionals (?)
  • Support for a long-polling transport (?)


FayeSwift is licensed under the MIT License.


You can’t perform that action at this time.