SwiftR 0.14.0

SwiftR 0.14.0

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布上次发布2017 年 9 月
SwiftSwift 版本3.0
SPM支持 SPM

Adam Hartford 维护。



SwiftR 0.14.0

http://swiftr.azurewebsites.net。当前的 iOS 演示应用程序现在使用此服务器。请查看 SwiftRChat 获取源代码。它是基于这个的,有一些小的变化

http://www.asp.net/signalr/overview/deployment/using-signalr-with-azure-web-sites

https://github.com/adamhartford/SignalRDemo 以获取示例自托管的 SignalR 应用程序。或者,查看 https://github.com/adamhartford/SignalRApplication 中的 ASP.NET 5 版本。

传输方法

默认情况下,SignalR会选择对您最佳的传输方式。您还可以指定传输方法

let connection = SignalR("https://swiftr.azurewebsites.net")
connection.transport = .auto // This is the default
connection.transport = .webSockets
connection.transport = .serverSentEvents
connection.transport = .foreverFrame
connection.transport = .longPolling

连接生命周期事件

SwiftR公开了以下SignalR事件

let connection = SignalR("http://swiftr.azurewebsites.net")
connection.started = { print("started") }
connection.connected = { print("connected: \(connection.connectionID)") }
connection.connectionSlow = { print("connectionSlow") }
connection.reconnecting = { print("reconnecting") }
connection.reconnected = { print("reconnected") }
connection.disconnected = { print("disconnected") }
connection.start()

重新连接

您可能会发现,一旦断开连接,手动尝试重新连接是必要的。以下是如何操作的示例

connection.disconnected = {
    print("Disconnected...")

    // Try again after 5 seconds
    let delayTime = dispatch_time(DISPATCH_TIME_NOW, Int64(5 * Double(NSEC_PER_SEC)))
    dispatch_after(delayTime, dispatch_get_main_queue()) {
        connection.start()
    }
}

停止/启动连接

使用stop()start()方法手动管理连接。

let connection  = SignalR("https://swiftr.azurewebsites.net")
connection.start()
connection.stop()

...

if connection.state == .connected {
    connection.stop()
} else if connection.state == .disonnected {
    connection.start()
}

连接状态

public enum State {
    case connecting
    case connected
    case disconnected
}

向SignalR发送信息

查询字符串

let connection = SignalR("https://swiftr.azurewebsites.net")
connection.queryString = ["foo": "bar"]

自定义头(仅非WebSocket)

let connection = SignalR("https://swiftr.azurewebsites.net")
connection.headers = ["X-MyHeader1": "Value1", "X-MyHeader2", "Value2"]

Cookie(仅UIWebView)

SwiftR会将您的应用中的NSHTTPCookieStorage中的任何cookie发送到SignalR。您也可以手动设置cookie

let cookieProperties = [
    NSHTTPCookieName: "Foo",
    NSHTTPCookieValue: "Bar",
    NSHTTPCookieDomain: "myserver.com",
    NSHTTPCookiePath: "/",
]
let cookie = NSHTTPCookie(properties: cookieProperties)
NSHTTPCookieStorage.sharedHTTPCookieStorage().setCookie(cookie!)

错误处理

connection.error = { error in 
  print("Error: \(error)")

  if let source = error?["source"] as? String, source == "TimeoutException" {
      print("Connection timed out. Restarting...")
      connection.start()
  }
}

许可

SwiftR遵循MIT许可证发布。详细信息请参阅LICENSE。