DNWebSocket alternatives and similar libraries
Based on the "WebSocket" category.
Alternatively, view DNWebSocket alternatives based on common mentions on social networks and blogs.
-
SocketRocket
A conforming Objective-C WebSocket client library. -
socket.io-client-swift
Socket.IO-client for iOS/OS X. -
SwiftWebSocket
High performance WebSocket client library for Swift, iOS and OSX. -
Socks
๐ Non-blocking TCP socket layer, with event-driven server and client. -
Swift-ActionCableClient
ActionCable is a new WebSocket server being released with Rails 5 which makes it easy to add real-time features to your app. This Swift client makes it dead-simple to connect with that server, abstracting away everything except what you need to get going. -
SwiftyTask
An extreme queuing system with high performance for managing all task in app with closure
Appwrite - The Open Source Firebase alternative introduces iOS support
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of DNWebSocket or a related project?
README
DNWebSocket
Object-Oriented, Swift-style WebSocket Library (RFC 6455) for Swift-compatible Platforms.
Tests
Conforms to all necessary Autobahn fuzzing tests. Autobahn
Test results for DNWebSocket you can see here.
In comparison with SocketRocket, this library shows 2-10 times better performance in many Limits/Performance tests.
Cases 6.4.1, 6.4.2, 6.4.3, 6.4.4 received result Non-Strict due to perfomance improvements(it's complicated to validate each fragmented text message)
Installation
Cocoapods
To install DNWebSocket via CocoaPods, get it:
$ gem install cocoapods
Then, create a Podfile
in your project root directory:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
target '<Target Name>' do
pod 'DNWebSocket', '~> 1.1.0'
end
And run:
$ pod install
For swift version < 4.2 use 1.0.2 version of pod.
Swift Package Manager
Currently, I'm looking for a generic approach which will allow to use C libraries with all Package Managers. So right now, please, use DNWebSocket-SPM repo.
Requirements
- iOS 8.0+ / macOS 10.10+ / tvOS 9.0+ / watchOS 2.0+
- Swift 4.0 + (but I didn't try earlier versions by the way :D)
Usage
Import library as follows:
import DNWebSocket
Now create websocket, configure it and connect:
let websocket = WebSocket(url: URL(string: "wss://echo.websocket.org:80")!,
timeout: 10,
protocols: ["chat", "superchat"])
websocket.onConnect = {
print("connected")
websocket.sendPing(data: Data())
}
websocket.onData = { (data) in
websocket.send(data: data)
}
websocket.onText = { (text) in
websocket.send(string: text)
}
websocket.onPing = { (data) in
websocket.sendPong(data: data)
}
websocket.onPong = { (data) in
print("Received pong from server")
}
websocket.onDebugInfo = { (debugInfo) in
print(debugInfo)
}
websocket.onDisconnect = { (error, closeCode) in
print("disconnected: \(closeCode)")
}
websocket.connect()
You can create custom connection by accessing .settings and .securitySettings properties:
websocket.settings.timeout = 5 // sec
websocket.settings.debugMode = true // will trigger .onDebugInfo callback and send .debug(String) event
websocket.settings.useCompression = true // false by default
websocket.settings.maskOutputData = true // true by default
websocket.settings.respondPingRequestsAutomatically = true // true by default
websocket.settings.callbackQueue = .main
websocket.securitySettings.useSSL = false // true by default
websocket.securitySettings.overrideTrustHostname = true // false by default
websocket.securitySettings.trustHostname = /*your hostname*/
websocket.securitySettings.certificateValidationEnabled = true
websocket.securitySettings.cipherSuites = []
*Note that all licence references and agreements mentioned in the DNWebSocket README section above
are relevant to that project's source code only.