SwiftWebSocket 2.7.0

SwiftWebSocket 2.7.0

测试已测试
语言语言 SwiftSwift
许可证 自定义
发布最新发布2018年2月
SPM支持 SPM

Josh Baker 维护。



 SwiftWebSocket

遵循 WebSocket (RFC 6455) 客户端库,适用于 iOS 和 Mac OSX。

SwiftWebSocket 通过了 Autobahn 的所有 521 个模糊测试,包括严格的 UTF-8 和消息压缩。

特性

  • 高性能。
  • 100% 符合 Autobahn 测试。包括基础、极限、压缩等。测试结果
  • 支持 TLS / WSS。自签名证书选项。
  • API 基于的 JavaScript API 进行建模。
  • 读取压缩消息 (permessage-deflate)。RFC 7692
  • 发送 ping 并接收 pong 事件。
  • 严格 UTF-8 处理。
  • binaryType 属性可以选择 [UInt8]NSData 消息。
  • 零断言。所有网络、流和协议错误都会通过 error 事件路由。
  • 支持 iOS / Objective-C。

示例

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)

复用和延迟 WebSocket 连接

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

自签名 SSL 证书

let ws = WebSocket("ws://url")
ws.allowSelfSignedSSL = true

网络服务(VoIP、视频、后台、声音)

// Allow socket to handle VoIP in the background.
ws.services = [.VoIP, .Background] 

联系我们

Josh Baker @tidwall

许可

SwiftWebSocket 源代码可供使用 MIT 许可。