Sockudo
Server SDKs

Swift

Use the Swift HTTP server SDK to publish events, authenticate channels, validate state, and manage push.

Install

Install through Swift Package Manager from the Sockudo monorepo package. SwiftPM resolves this from the v2.0.0 Git tag and the root Package.swift manifest:

.package(url: "https://github.com/sockudo/sockudo", from: "2.0.0")
.product(name: "Sockudo", package: "sockudo")

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.

On this page