ActionCable is a new WebSockets server being released with Rails 5 which makes it easy to add real-time features to your app. This Swift client makes it dead-simple to connect with that server, abstracting away everything except what you need to get going.
To install, simply:
Add the following line to your Podfile and run pod install
pod"ActionCableClient"Add the following to your Cartfile and run carthage update as normal.
github"danielrhodes/Swift-ActionCableClient"import ActionCableClient
self.client =ActionCableClient(url:URL(string:"ws://domain.tld/cable")!)
// Connect!
client.connect()
client.onConnected ={print("Connected!")}
client.onDisconnected ={(error:Error?)inprint("Disconnected!")}// Create the Room Channel
letroomChannel= client.create("RoomChannel") //The channel name must match the class name on the server
// More advanced usage
letroom_identifier=["room_id": identifier]letroomChannel= client.create("RoomChannel", identifier: room_identifier, autoSubscribe:true, bufferActions:true)// Receive a message from the server. Typically a Dictionary.
roomChannel.onReceive ={(JSON :Any?, error :ErrorType?)inprint("Received", JSON, error)}
// A channel has successfully been subscribed to.
roomChannel.onSubscribed ={print("Yay!")}
// A channel was unsubscribed, either manually or from a client disconnect.
roomChannel.onUnsubscribed ={print("Unsubscribed")}
// The attempt at subscribing to a channel was rejected by the server.
roomChannel.onRejected ={print("Rejected")}// Send an action
roomChannel["speak"](["message":"Hello, World!"])
// Alternate less magical way:
roomChannel.action("speak",["message":"Hello, World!"])
// Note: The `speak` action must be defined already on the server// ActionCable can be picky about origins, so if you
// need it can be set here.
client.origin ="https://domain.tld/"
// If you need any sort of authentication, you // will not have cookies like you do in the browser,
// so set any headers here.
//
// These are available in the `Connection`
// on the server side.
client.headers =["Authorization":"sometoken"]client.onPing ={}For more documentation, see the wiki
Starscream: The underlying WebSocket library.
Daniel Rhodes, rhodes.daniel@gmail.com
ActionCableClient is available under the MIT license. See the LICENSE file for more info.