遵循 WebSocket (RFC 6455) 客户端库,适用于 iOS 和 Mac OSX。
SwiftWebSocket 通过了 Autobahn 的所有 521 个模糊测试,包括严格的 UTF-8 和消息压缩。
permessage-deflate
)。RFC 7692binaryType
属性可以选择 [UInt8]
或 NSData
消息。error
事件路由。func echoTest(){
var messageNum = 0
let ws = WebSocket("wss://echo.websocket.org")
let send : ()->() = {
messageNum += 1
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()
}
}
}
}
let request = NSMutableURLRequest(URL: NSURL(string:"ws://url")!)
request.addValue("AUTH_TOKEN", forHTTPHeaderField: "Authorization")
request.addValue("Value", forHTTPHeaderField: "X-Another-Header")
let ws = WebSocket(request: request)
v2.3.0+ 提供了一个可选的 open
方法。这将为 WebSocket
对象提供一个实例,而不需要立即连接到服务器。它也可以在 close
事件后重新连接到服务器。
例如,
let ws = WebSocket()
ws.event.close = { _ in
ws.open() // reopen the socket to the previous url
ws.open("ws://otherurl") // or, reopen the socket to a new url
}
ws.open("ws://url") // call with url
可以使用 compression
标志请求从服务器获取压缩消息。如果服务器不支持或接受请求,那么连接将继续正常进行,但不使用未压缩的消息。
let ws = WebSocket("ws://url")
ws.compression.on = true
let ws = WebSocket("ws://url")
ws.allowSelfSignedSSL = true
// Allow socket to handle VoIP in the background.
ws.services = [.VoIP, .Background]
Josh Baker @tidwall
SwiftWebSocket 源代码可供使用 MIT 许可。