WebSockets in Swift: Echtzeit-Anwendungen in einer Stunde erstellen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Warum WebSockets eine Superkraft für Swift-Entwickler sind?

\n\n

Stellen Sie sich vor: Sie öffnen einen Messenger und Nachrichten kommen sofort an. Kein endloses Aktualisieren der Seite, kein „Ziehen zum Aktualisieren“. Das ist die Magie von Echtzeit, und in Swift wird sie mit WebSockets umgesetzt. Wenn Sie bisher nur HTTP-Anfragen verwendet haben, verpassen Sie eine ganze Welt voller Möglichkeiten: Online-Chats, Börsenkurse, Live-Benachrichtigungen, Multiplayer-Spiele.

\n\n

In diesem Artikel schauen wir uns an, wie Sie WebSockets in Ihre Swift-App einbinden. Kein überflüssiges Geschwafel – nur Code, den Sie kopieren und ausführen können. Am Ende können Sie in weniger als einer Stunde Ihren ersten Echtzeit-Chat schreiben. Los geht's!

\n\n

Was sind WebSockets und worin sind sie besser als REST API?

\n\n

WebSockets sind ein Protokoll für die bidirektionale Kommunikation zwischen Client und Server. Im Gegensatz zu REST, bei dem der Client den Server ständig mit Anfragen „nervt“, stellt WebSocket eine dauerhafte Verbindung her. Der Server kann selbst Daten senden, sobald sie anfallen. Das ist der Unterschied zwischen ständig einen Freund anzurufen „Bist du schon da?“ und einfach die Tür zu öffnen und ihn hereinzulassen.

\n\n

Für Swift-Entwickler liegt der Hauptvorteil in der Einsparung von Traffic und Ressourcen. Statt Dutzender HTTP-Anfragen pro Minute – eine einzige Verbindung. Ideal für Trading-Apps, Online-Spiele, Systemüberwachung.

\n\n

Wann sollte man WebSockets in iOS einsetzen?

\n
    \n
  • Online-Chats – Nachrichten müssen sofort zugestellt werden.
  • \n
  • Börsenkurse – der Preis ändert sich jede Sekunde.
  • \n
  • Multiplayer-Spiele – Synchronisation der Spieleraktionen.
  • \n
  • Echtzeit-Benachrichtigungen – neuer Like, Bestellung, Nachricht.
  • \n
  • IoT-Anwendungen – Sensordaten kommen kontinuierlich an.
  • \n
\n\n

Aber setzen Sie WebSockets nicht überall ein. Wenn Sie nur eine Produktliste laden müssen, ist ein normaler HTTP GET besser geeignet. WebSocket ist sinnvoll, wenn Daten häufiger als alle 10 Sekunden aktualisiert werden.

\n\n

WebSocket in Swift einrichten: von Null zur ersten Verbindung

\n\n

Swift hat eine integrierte Unterstützung für WebSockets – die Klasse URLSessionWebSocketTask. Keine externen Bibliotheken nötig. Schreiben wir einen einfachen Client.

\n\n

Schritt 1: WebSocket-Verbindung herstellen

\n\n
import Foundation\n\nclass WebSocketManager: NSObject {\n    private var webSocketTask: URLSessionWebSocketTask?\n    private let session: URLSession\n    \n    override init() {\n        self.session = URLSession(configuration: .default, delegate: nil, delegateQueue: OperationQueue())\n        super.init()\n    }\n    \n    func connect(to url: URL) {\n        webSocketTask = session.webSocketTask(with: url)\n        webSocketTask?.resume()\n        print("WebSocket-Verbindung hergestellt")\n        receiveMessage()\n    }\n    \n    func disconnect() {\n        webSocketTask?.cancel(with: .normalClosure, reason: nil)\n        print("Verbindung geschlossen")\n    }\n}\n
\n\n

Das ist ein grundlegender Wrapper. Die Methode resume() startet die Verbindung – ohne sie passiert nichts. Merken Sie sich das wie ein Mantra: Immer resume() aufrufen.

\n\n

Schritt 2: Nachrichten senden und empfangen

\n\n
extension WebSocketManager {\n    func sendMessage(_ text: String) {\n        let message = URLSessionWebSocketTask.Message.string(text)\n        webSocketTask?.send(message) { error in\n            if let error = error {\n                print("Fehler beim Senden: \\(error.localizedDescription)")\n            }\n        }\n    }\n    \n    private func receiveMessage() {\n        webSocketTask?.receive { [weak self] result in\n            switch result {\n            case .success(let message):\n                switch message {\n                case .string(let text):\n                    print("Nachricht empfangen: \\(text)")\n                

Blogs

Buchempfehlungen