Server SDKs
Swift
Use the Swift HTTP server SDK to publish events, authenticate channels, validate state, and manage push.
Install
.package(url: "https://github.com/sockudo/sockudo-http-swift.git",
.upToNextMajor(from: "1.0.0")).product(name: "Sockudo", package: "sockudo-http-swift")Configure
import Sockudo
let sockudo = Sockudo(options: try SockudoClientOptions(
appId: 123456,
key: "app-key",
secret: "app-secret",
host: "127.0.0.1",
port: 6001
))Publish
let event = try Event(
name: "order.created",
data: ["id": "ord_123"],
channel: Channel(name: "orders", type: .public),
idempotencyKey: "order-created-ord_123"
)
sockudo.trigger(event: event) { result in
switch result {
case .success(let summaries):
print(summaries)
case .failure(let error):
print(error)
}
}Auth
let privateChannel = Channel(name: "orders", type: .private)
sockudo.authenticate(channel: privateChannel, socketId: "123.456") { result in
print(result)
}
let userData = PresenceUserAuthData(userId: "user-42", userInfo: ["name": "Ada"])
let presenceChannel = Channel(name: "lobby", type: .presence)
sockudo.authenticate(channel: presenceChannel, socketId: "123.456", userData: userData) { result in
print(result)
}Push notifications
sockudo.activateDevice(body: [
"deviceId": "ios-device-1",
"clientId": "user-42",
"platform": "apns",
"providerToken": "provider-token",
]) { result in
print(result)
}
sockudo.upsertChannelPushSubscription(body: [
"deviceId": "ios-device-1",
"clientId": "user-42",
"channel": "orders",
]) { result in
print(result)
}
sockudo.publishPush(request: [
"recipients": [["type": "channel", "channel": "orders"]],
"payload": [
"title": "Order updated",
"body": "Order ord_123 is packed",
],
"idempotency_key": "push-order-ord_123-packed",
]) { result in
print(result)
}Use Swift server SDKs in trusted services, not inside untrusted client apps with app secrets.