SignalR-Swift 是一个基于 DyKnow 的 https://github.com/DyKnow/SignalR-ObjC 构建 iOS 客户端库。它建立在 AlamoFire 和 Starscream 之上。SignalR-Swift 旨在与 ASP.NET SignalR 一起使用,这是一个为 ASP.NET 开发者设计的全新库,可以使向应用程序添加实时功能变得非常简单。什么是“实时 Web”功能?这是指服务器端代码在发生时实时地将内容推送到已连接的客户端的能力。
安装
使用 CocoaPods 进行安装
CocoaPods 是 Objective-C 的依赖管理器,它自动化并简化了在项目中使用 3rd 方库(如 SignalR-Swift)的过程。更多信息,请参阅"入门"指南。你可以使用以下命令安装它:
$ gem install cocoapods
Podfile
要将SignalR-Swift集成到您的Xcode项目中并使用CocoaPods,请在上面的Podfile中指定它。
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
pod 'SignalRSwift', '~> 2.0.2'
然后,运行以下命令:
$ pod install
示例用法
持久连接
using System.Threading.Tasks;
using Microsoft.AspNet.SignalR;
//Server
public class MyConnection : PersistentConnection
{
protected override Task OnReceived(IRequest request, string connectionId, string data)
{
// Broadcast data to all clients
return Connection.Broadcast(data);
}
}
import SignalRSwift
//Client
var connection = Connection(withUrl: "https:///endpoint/");
// register for connection lifecycle events
connection.started = {
print("Connected")
}
connection.reconnecting = {
print("Reconnecting...")
}
connection.reconnected = {
print("Reconnected.")
}
connection.closed = {
print("Disconnected")
}
connection.connectionSlow = { print("Connection slow...") }
connection.error = { error in
print("Error")
}
connection.start()
Hub
//Server
public class Chat : Hub
{
public void Send(string message)
{
// Call the addMessage method on all clients
Clients.All.addMessage(message);
}
}
//Client
import SignalRSwift
// Connect to the service
var hubConnection = HubConnection(withUrl: "https:///endpoint")
var chat = hubConnection.createHubProxy(hubName: "chat")
chat.on(eventName: "addMessage") { (args) in
if let message = args[0] {
print("Message: \(message)")
}
}
// register for connection lifecycle events
hubConnection.started = {
print("Connected")
}
hubConnection.reconnecting = {
print("Reconnecting...")
}
hubConnection.reconnected = {
print("Reconnected.")
}
hubConnection.closed = {
print("Disconnected")
}
hubConnection.connectionSlow = { print("Connection slow...") }
hubConnection.error = { error in
print("Error")
}
hubConnection.start()
定制查询参数
持久连接
let qs = [
"param1": "1",
"param2": "another"
}
var connection = Connection(withUrl: "https:///endpoint", queryString: qs)
Hub连接
let qs = [
"param1": "1",
"param2": "another"
}
var hubConnection = HubConnection(withUrl: "https:///endpoint", queryString: qs)
定制请求头
持久连接
let headers = [
"param1": "1",
"param2": "another"
]
var connection = Connection(withUrl: "https:///endpoint", queryString: qs)
connection.headers = headers
// alternative usage
var connection = Connection(withUrl: "https:///endpoint", queryString: qs)
connection.addValue(value: "1", forHttpHeaderField: "param1")
connection.addValue(value: "another", forHttpHeaderField: "param2")
中心连接
let headers = [
"param1": "1",
"param2": "another"
}
var hubConnection = HubConnection(withUrl: "https:///endpoint", queryString: qs)
hubConnection.headers = headers
// alternative usage
var hubConnection = HubConnection(withUrl: "https:///endpoint", queryString: qs)
hubConnection.addValue(value: "1", forHttpHeaderField: "param1")
hubConnection.addValue(value: "another", forHttpHeaderField: "param2")
网络
- SignalR-Swift 使用 Alamofire。最低支持的 AlamoFire 版本是 4.2.x
- SignalR-Swift 使用 Starscream。
许可
SignalR-Swift 在 MIT 许可证下可用。更多信息请参阅 许可文件。
SignalR-Swift 使用第三方代码,每个都有自己的许可证,更多贡献请参阅 贡献。