Warum WebSockets eine Superkraft für Swift-Entwickler sind?
\n\nStellen 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\nIn 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\nWas sind WebSockets und worin sind sie besser als REST API?
\n\nWebSockets 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\nFü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\nWann 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
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\nWebSocket in Swift einrichten: von Null zur ersten Verbindung
\n\nSwift hat eine integrierte Unterstützung für WebSockets – die Klasse URLSessionWebSocketTask. Keine externen Bibliotheken nötig. Schreiben wir einen einfachen Client.
Schritt 1: WebSocket-Verbindung herstellen
\n\nimport 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\nDas ist ein grundlegender Wrapper. Die Methode resume() startet die Verbindung – ohne sie passiert nichts. Merken Sie sich das wie ein Mantra: Immer resume() aufrufen.
Schritt 2: Nachrichten senden und empfangen
\n\nextension 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