WebSocket-Bibliotheken für Swift (iOS/macOS): Starscream und URLSessionWebSocketTask
WebSocket ist ein Protokoll, das eine Vollduplex-Kommunikation zwischen Client und Server über eine einzige TCP-Verbindung ermöglicht. Im Swift-Ökosystem (iOS/macOS) gibt es zwei Hauptansätze für die Arbeit mit WebSocket: die native Implementierung URLSessionWebSocketTask (verfügbar ab iOS 13/macOS 10.15) und die beliebte Drittanbieter-Bibliothek Starscream. Beide ermöglichen die Erstellung reaktiver Echtzeit-Anwendungen: Chats, Kursfeeds, Multiplayer-Spiele usw.
Native Implementierung URLSessionWebSocketTask
Mit der Veröffentlichung von iOS 13 hat Apple die integrierte WebSocket-Unterstützung im Foundation-Framework hinzugefügt. Dies macht die Einbindung von Drittanbieter-Abhängigkeiten überflüssig, wenn Ihre App auf moderne Betriebssystemversionen ausgerichtet ist.
Hauptfunktionen:
- Vollständig asynchrone Arbeit über
async/awaitoder Callbacks - Automatische Verwaltung des Verbindungslebenszyklus
- Unterstützung von
closeCode,closeReasonfür korrekte Beendigung - Integrierte Arbeit mit
URLSession(Unterstützung von Timeouts, Caching-Richtlinien)
Beispiel für Verbindung und Nachrichtensenden:
import Foundation
class WebSocketManager { private var webSocketTask: URLSessionWebSocketTask? private let session = URLSession.shared func connect() { guard let url = URL(string: "wss://echo.websocket.org") else { return } webSocketTask = session.webSocketTask(with: url) webSocketTask?.resume() receiveMessage() } func sendMessage(_ text: String) { let message = URLSessionWebSocketTask.Message.string(text) webSocketTask?.send(message) { error in if let error = error { print("Fehler beim Senden: \\(error.localizedDescription)") } } } private func receiveMessage() { webSocketTask?.receive { [weak self] result in switch result { case .success(let message): switch message { case .string(let text): print("Empfangen: \\(text)") case .data(let data): print("Binärdaten empfangen: \\(data)") @unknown default: fatalError() } // Weiterhören self?.receiveMessage() case .failure(let error): print("Fehler beim Empfangen: \\(error)") // Möglicherweise Wiederverbindung } } } func disconnect() { webSocketTask?.cancel(with: .normalClosure, reason: nil) }}Starscream — flexible und bewährte Bibliothek
Starscream ist eine Open-Source-WebSocket-Bibliothek für Swift, geschrieben von Dalton Cherry und von der Community unterstützt. Sie funktioniert auf iOS, macOS, tvOS und watchOS, beginnend mit älteren Versionen (iOS 8+). Starscream bietet mehr Kontrolle über die Verbindung und unterstützt zusätzliche Funktionen wie Komprimierung (permessage-deflate) und benutzerdefinierte Header.
Installation über Swift Package Manager:
// In Package.swift oder über Xcode: File → Swift Packages → Add Package Dependency.package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.0")Hauptfunktionen:
- Unterstützung von
WebSocketDelegatefür alle Ereignisse (Verbindung, Datenempfang, Fehler, Trennung) - Manuelle Verwaltung von Pings/Pongs zur Aufrechterhaltung der Verbindung
- Möglichkeit zum Senden von Binärdaten (Data) und Zeichenketten (String/UTF-8)
- Unterstützung von SSL/TLS und selbstsignierten Zertifikaten
Auch in der Bibliothek
Elasticsearch-Client für C# (.NET): NEST und Elastic.Clients.Elasticsearch
E-Mail-Versand in Rust: Die Bibliotheken lettre und async-smtp für Mailings
ExcelJS für JavaScript (Node.js): Komplette Anleitung mit Beispielen
CoreBluetooth für Swift: Vollständiges BLE-Guide mit Beispielen
Protocol Buffers C++: Komplettleitfaden mit Beispielen