DNWebSocket alternatives and similar libraries
Based on the "Socket" category.
Alternatively, view DNWebSocket alternatives based on common mentions on social networks and blogs.
-
SwiftWebSocket
A high performance WebSocket client library for swift. -
BlueSocket
Socket framework for Swift using the Swift Package Manager. Works on iOS, macOS, and Linux. -
Socks
๐ Non-blocking TCP socket layer, with event-driven server and client. -
BlueSSLService
SSL/TLS Add-in for BlueSocket using Secure Transport and OpenSSL -
SocketIO-Kit
Socket.io iOS and OSX Client compatible with v1.0 and later -
SwiftDSSocket
DispatchSource based socket framework written in pure Swift
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.