RxStarscream 0.10

RxStarscream 0.10

LangLanguage SwiftSwift
License Apache-2.0
ReleasedLast Release Mar 2019
SPMSupports SPM

Maintained by Shai Mishali, Guy Kahlon, RxSwift Community.

Depends on:
Starscream~> 3
RxSwift~> 4.3
RxCocoa~> 4.3

  • By
  • Guy Kahlon


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 Podfile:

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.