centrifugal / centrifuge-swift

Swift client SDK for bidirectional real-time communication with Centrifugo and Centrifuge-based server over WebSocket
MIT License
49 stars 44 forks source link
centrifuge centrifugo swift websocket

SwiftCentrifuge

Websocket client for Centrifugo server and Centrifuge library.

There is no v1 release of this library yet – API still evolves. At the moment patch version updates only contain backwards compatible changes, minor version updates can have backwards incompatible API changes.

Check out client SDK API specification to learn how this SDK behaves. It's recommended to read that before starting to work with this SDK as the spec covers common SDK behavior - describes client and subscription state transitions, main options and methods. Also check out examples folder.

The features implemented by this SDK can be found in SDK feature matrix.

The latest centrifuge-swift is compatible with Centrifugo server v5 and v4 and Centrifuge >= 0.25.0. For Centrifugo v2, Centrifugo v3 and Centrifuge < 0.25.0 you should use centrifuge-swift v0.4.6.

Installation

There are several convenient ways.

CocoaPods

To integrate SwiftCentrifuge into your Xcode project using CocoaPods, specify it in your Podfile:

pod 'SwiftCentrifuge'

Swift Package Manager

SwiftCentrifuge is compatible with SPM. If you get a warning complaining about missing pc file, you may need to install pkg-config. On macOS, this can be achieved with brew install pkg-config.

Manual

Clone the repo and drag files from Sources folder into your Xcode project.

Dependencies

This library depends on SwiftProtobuf

Requirements

Getting Started

An example app is included demonstrating basic client functionality.

Usage in background

When a mobile application goes to the background there are OS-specific limitations for established persistent connections - which can be silently closed shortly. Thus in most cases you need to disconnect from a server when app moves to the background and connect again when app goes to the foreground.

Using URLSessionWebSocketTask

See useNativeWebSocket option of Client which allows using URLSessionWebSocketTask instead of our fork of Starscream v3. Please report if you have successful setup of centrifuge-swift with URLSessionWebSocketTask – so we could eventually make it default.

License

SwiftCentrifuge is available under the MIT license. See LICENSE for details.

Release (for maintainers)

Bump version in SwiftCentrifuge.podspec

Push to master and create new version tag.

Then run:

pod trunk push SwiftCentrifuge.podspec