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.
binaryType
property to choose between[UInt8]
orNSData
messages.- Zero asserts. All networking, stream, and protocol errors are routed through the
error
event.
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.