Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/danielrhodes/Swift-ActionCableClient
ActionCable is a new WebSocket 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.
https://github.com/danielrhodes/Swift-ActionCableClient
Last synced: about 1 month ago
JSON representation
ActionCable is a new WebSocket 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.
- Host: GitHub
- URL: https://github.com/danielrhodes/Swift-ActionCableClient
- Owner: danielrhodes
- License: mit
- Created: 2016-02-29T10:42:01.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2022-09-23T12:26:18.000Z (over 2 years ago)
- Last Synced: 2024-04-24T19:25:46.635Z (9 months ago)
- Language: Swift
- Size: 500 KB
- Stars: 165
- Watchers: 7
- Forks: 128
- Open Issues: 29
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - Swift-ActionCableClient - ActionCable is a new WebSocket server being released with Rails 5 which makes it easy to add real-time features to your app. (WebSocket / Web View)
- awesome-ios-star - Swift-ActionCableClient - ActionCable is a new WebSocket server being released with Rails 5 which makes it easy to add real-time features to your app. (WebSocket / Web View)
README
# ActionCableClient
[![Version](https://img.shields.io/cocoapods/v/ActionCableClient.svg?style=flat)](http://cocoapods.org/pods/ActionCableClient)
[![License](https://img.shields.io/cocoapods/l/ActionCableClient.svg?style=flat)](http://cocoapods.org/pods/ActionCableClient)
[![Platform](https://img.shields.io/cocoapods/p/ActionCableClient.svg?style=flat)](http://cocoapods.org/pods/ActionCableClient)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)[ActionCable](https://github.com/rails/rails/tree/master/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.
## Installation
To install, simply:
#### Cocoapods
Add the following line to your `Podfile` and run `pod install`
```ruby
pod "ActionCableClient"
```#### Carthage
Add the following to your `Cartfile` and run `carthage update` as normal.
```ruby
github "danielrhodes/Swift-ActionCableClient"
```## Usage
### Get Started & Connect
```swift
import ActionCableClientself.client = ActionCableClient(url: URL(string: "ws://domain.tld/cable")!)
// Connect!
client.connect()client.onConnected = {
print("Connected!")
}client.onDisconnected = {(error: Error?) in
print("Disconnected!")
}
```### Subscribe to a Channel
```swift
// Create the Room Channel
let roomChannel = client.create("RoomChannel") //The channel name must match the class name on the server// More advanced usage
let room_identifier = ["room_id" : identifier]
let roomChannel = client.create("RoomChannel", identifier: room_identifier, autoSubscribe: true, bufferActions: true)```
### Channel Callbacks
```swift
// Receive a message from the server. Typically a Dictionary.
roomChannel.onReceive = { (JSON : Any?, error : ErrorType?) in
print("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")
}```
### Perform an Action on a Channel
```swift
// 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
```### Authorization & Headers
```swift
// 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"
]
```### Misc
```swift
client.onPing = {
}```
For more documentation, see the [wiki](https://github.com/danielrhodes/Swift-ActionCableClient/wiki/Documentation)
## Requirements
[Starscream](https://github.com/daltoniam/Starscream): The underlying WebSocket library.
## Author
Daniel Rhodes, [email protected]
## License
ActionCableClient is available under the MIT license. See the LICENSE file for more info.