All notable changes to this project will be documented in this file. The format is based on Keep a Changelog
This product uses Semantic Versioning.
- Added weak self references in heartbeat timer
- Added guards against weak self in PhoenixTransport
- Additional thread related crashes
- Fixed various thread-related crashes
- Added
socket.headers
which will be added to theURLRequest
when opening a WebSocket connection - Using thread-safe array for Socket callback bindings, fixing a crash when creating a channel
- Breaking a retain cycle in socket
- Fix retain cycles in
URLSessionTransport
and using default operation queue - Adding an optional
leeway
to theHeartbeatTimer
- Added additional
open
methods inURLSessionTransport
for further customization - Using a thread-safe array for Channel bindings
- Changed
URLSessionTransport
toopen
to provide for custom behavior, such as SSL Pinning
- Added
connectionState
toSocket
which exposes the Socket's ready state
- #226 Adds
URLResponse
as an optional value insocket.onError
callbacks to allow for checking status codes from the server when the Socket connection errors out. See Examples in PR for more details
- Improves reconnection logic around a heartbeat timeout
- Removes RxSwift dependency
- Removes Starscream dependency
- Creating new repos to host these extensions
- Updates RxSwift version to 6.x
This ia a BREAKING release. The following has changed to properly matched the phoenix.js library
message.payload.response
is now automatically unwrapped and returned asmessage.payload
forphx_reply
events.- The client now, be default, uses the JSON V2 Serializer which was added in phoenix 1.3. If you are still running 1.2 or earlier, then you will need to
continue using SwiftPhoenixClient 2.1.0, or provide your own custom
vsn
,encoder
anddecoder
to theSocket
class.
- Fixed HeartbeatTimer to add thread safety and fix crash reported in #188
- Updated Presence.Options init method to be public
- Updated URLSessionWebsocketTask init method to accept a custom configuration
- Restructured project
- Added support for URLSession's Websocket Task
- Split Starscream and RxSwift into optional modules
- Fixed Cartfile declaration of Starscream
- Added
HeartbeatTimer
class which allows running Timers to run on their own thread - Made
Socket
init public to allow customization of the transport methhod
- Pinned back Starscream version to fix Carthage build issue
- #153: Added ability to pass a closure when initializing a
Socket
to dynamically changeparams
when reconnecting - Fixed Package.swift and updated it to use latest Starscream
- #151: Made isJoined, isJoining, etc methods on Channel public
- #141: tvOS support
- #145: Refactored Socket reconnect strategy
- #146: Refactored Channel rejoin strategy
- Swift 5
- Fixed issue with Carthage installs
- Rewrite of large parts of the Socket and Channel classes
- Optional API for automatic retain cycle handling
- Presence support
- #119: A working implementation of Presence
- #120: Xcode 10 and Swift 4.2
- #111: Strong memory cycles between Socket, Channel and Timers
- #112: Leak when Socket disconnects and properly call
onClose()
- #114: Carthage failing on builds and app store uploads
- #116: A Channel's
topic
is now exposed aspublic
- Added security configuration to the underlying WebSocket.
Continue to improve the API and behavior of the library to behave similar to the JS library. This release introduces some breaking changes in the API that will require updates to your code. See the [usage guide] for help.
- Swift 4.1
- All callbacks now receive a
Message
object. ThePayload
can be accessed usingmessage.payload
channel.join()
can now take optional params to override the ones set while creating the Channel- Timeouts when sending messages
- Rejoin timer which can be configured to attempt to rejoin given a function. Defaults to 1s, 2s, 5s, 10s and then retries every 10s
- Socket and Channel
on
callbacks are able to hold more than just a single callback
Thanks to @murphb52 and @ALucasVanDongen for helping with some of the development and testing of this release!
- Initial params are not sent through when opening a channel
- Starscream to 3.0.4
- Swift 4
- Mirror Phoenix.js more closely