by RxSwiftCommunity

RxSwiftCommunity /RxStarscream

A lightweight extension to subscribe Starscream websocket events with RxSwift

135 Stars 47 Forks Last release: over 1 year ago (0.10.0) MIT License 75 Commits 12 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:


CircleCI pod Carthage compatible

A lightweight extension to Starscream to track websocket events using RxSwift observables.



RxStarscream is available through CocoaPods. Add the following line to your

pod 'RxStarscream'

Then run:

pod install

RxStarscream version vs Swift version.

Below is a table that shows which version of RxStarscream you should use for your Swift version.

| Swift | RxStarscream | RxSwift | | ------ | ------------- |---------------| | >= 4.2 | >= 0.10 | >= 4.3 | | < 4.2 | >= 0.8 | >= 4.0 | | 3.X | 0.7 | 3.0.0 - 3.6.1 |


Add this to your Cartfile

github "RxSwiftCommunity/RxStarscream"

Then run:

carthage update

Usage examples

After installing via CococPods or Carthage, you should import the framework.

import RxStarscream

Once imported, you can open a connection to your WebSocket server.

socket = WebSocket(url: URL(string: "ws://localhost:8080/")!)

Now you can subscribe e.g to all of the websocket events:

socket.rx.response.subscribe(onNext: { (response: WebSocketEvent) in
    switch response {
    case .connected:
    case .disconnected(let error):
        print("Disconnected with optional error : \(error)")
    case .message(let msg):
        print("Message : \(msg)")
    case .data(_):
    case .pong:
}).disposed(by: disposeBag)

Or just to a connect event:

socket.rx.connected.subscribe(onNext: { (isConnected: Bool) in
    print("Is connected : \(isConnected)")
}).disposed(by: disposeBag)

Or just to a message event:

socket.rx.text.subscribe(onNext: { (message: String) in
    print("Message : \(message)")
}).disposed(by: disposeBag)

Sample Project

There's a sample project (you need to run

carthage update
for it to compile).

The sample project uses echo server - https://www.websocket.org/echo.html

Have fun!


Everyone in the RxSwift Slack channel.


Bug reports and pull requests are welcome.


RxStarscream is available under the MIT license. See the LICENSE file for more info.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.