Skip to content
A lightweight extension to subscribe Starscream websocket events with RxSwift
Branch: master
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci Update CI release phase Mar 1, 2019
RxStarscream-macOS
RxStarscream-macOSTests
RxStarscream.xcodeproj Minor configuration fixes and cleanups Oct 9, 2018
RxStarscream
RxStarscreamTests Updated README and .gitignore Jan 2, 2018
SampleApp Minor configuration fixes and cleanups Oct 9, 2018
Source
scripts
.gitignore Updated README and .gitignore Jan 2, 2018
.swift-version
Cartfile Update Cartfile Oct 9, 2018
Cartfile.resolved
LICENSE Update pod spec file. May 18, 2016
README.md
RxStarscream.podspec Update Podspec Oct 9, 2018

README.md

RxStarscream

CircleCI pod Carthage compatible

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

Installation

CocoaPods

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

Carthage

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/")!)
socket.connect()

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

socket.rx.response.subscribe(onNext: { (response: WebSocketEvent) in
	switch response {
	case .connected:
		print("Connected")
	case .disconnected(let error):
		print("Disconnected with optional error : \(error)")
	case .message(let msg):
		print("Message : \(msg)")
	case .data(_):
		print("Data")
	case .pong:
		print("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!

Thanks

Everyone in the RxSwift Slack channel.

Contributing

Bug reports and pull requests are welcome.

License

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

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.