SwiftWebSocket
Conforming WebSocket (RFC 6455) client library implemented in pure Swift.
Test results for SwiftWebSocket. You can compare to the popular Objective-C Library
SwiftWebSocket currently passes all 521 of the Autobahn’s fuzzing tests, including strict UTF-8, and message compression.
Features
- High performance.
- TLS / WSS support. Self-signed certificate option.
- The API is modeled after the Javascript API.
- Reads compressed messages (
permessage-deflate). IETF Draft - Send pings and receive pong events.
- Strict UTF-8 processing.
binaryTypeproperty to choose between[UInt8]orNSDatamessages.- Zero asserts. All networking, stream, and protocol errors are routed through the
errorevent.
Example
func echoTest(){
var messageNum = 0
let ws = WebSocket("wss://echo.websocket.org")
let send : ()->() = {
let msg = "\(++messageNum): \(NSDate().description)"
print("send: \(msg)")
ws.send(msg)
}
ws.event.open = {
print("opened")
send()
}
ws.event.close = { code, reason, clean in
print("close")
}
ws.event.error = { error in
print("error \(error)")
}
ws.event.message = { message in
if let text = message as? String {
print("recv: \(text)")
if messageNum == 10 {
ws.close()
} else {
send()
}
}
}
}
Installation (iOS and OS X)
Carthage
Add the following to your Cartfile:
github "tidwall/SwiftWebSocket"
Then run carthage update.
Follow the current instructions in Carthage’s README for up to date installation instructions.
The import SwiftWebSocket directive is required in order to access SwiftWebSocket features.
CocoaPods
Add the following to your Podfile:
use_frameworks!
pod 'SwiftWebSocket'
Then run pod install with CocoaPods 0.36 or newer.
The import SwiftWebSocket directive is required in order to access SwiftWebSocket features.
Manually
Copy the SwiftWebSocket\WebSocket.swift file into your project.
You must also add the libz.dylib library. Project -> Target -> Build Phases -> Link Binary With Libraries
There is no need for import SwiftWebSocket when manually installing.
Contact
Josh Baker @tidwall
License
The SwiftWebSocket source code is available under the MIT License.
View on GitHub
SwiftWebSocket Reference