WebSockets en Swift : Créez des applications en temps réel en une heure

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Pourquoi les WebSockets sont-ils un super-pouvoir pour le développeur Swift ?

\n\n

Imaginez : vous ouvrez un messager, et les messages arrivent instantanément. Plus de rafraîchissements infinis de page, plus de « tirez pour actualiser ». C'est la magie du temps réel, et en Swift elle se réalise avec WebSockets. Si vous n'avez utilisé jusqu'à présent que des requêtes HTTP, vous passez à côté de tout un monde de possibilités : chats en ligne, cotations boursières, notifications en direct, jeux multijoueurs.

\n\n

Dans cet article, nous allons voir comment ajouter WebSockets à votre application Swift. Pas de blabla — seulement du code que vous pouvez copier et exécuter. À la fin, vous serez capable d'écrire votre premier chat en temps réel en moins d'une heure. C'est parti !

\n\n

Que sont les WebSockets et en quoi sont-ils meilleurs que l'API REST ?

\n\n

WebSockets est un protocole de communication bidirectionnelle entre le client et le serveur. Contrairement à REST, où le client « sollicite » constamment le serveur avec des questions, WebSocket établit une connexion permanente. Le serveur peut lui-même envoyer des données lorsqu'elles apparaissent. C'est comme la différence entre appeler constamment un ami « Tu es déjà arrivé ? » et simplement ouvrir la porte pour le laisser entrer.

\n\n

Pour le développeur Swift, le principal avantage est l'économie de trafic et de ressources. Au lieu de dizaines de requêtes HTTP par minute — une seule connexion. Idéal pour les applications de trading, les jeux en ligne, la surveillance de systèmes.

\n\n

Quand utiliser WebSockets dans iOS ?

\n
    \n
  • Chats en ligne — les messages doivent être livrés instantanément.
  • \n
  • Cotations boursières — le prix change chaque seconde.
  • \n
  • Jeux multijoueurs — synchronisation des actions des joueurs.
  • \n
  • Notifications en temps réel — nouveau like, commande, message.
  • \n
  • Applications IoT — les données des capteurs arrivent en continu.
  • \n
\n\n

Mais il ne faut pas utiliser WebSockets partout. Si vous avez simplement besoin de charger une liste de produits — une simple requête HTTP GET fera mieux l'affaire. WebSocket est justifié lorsque les données sont mises à jour plus souvent qu'une fois toutes les 10 secondes.

\n\n

Configuration de WebSocket en Swift : du début à la première connexion

\n\n

Swift dispose d'un support intégré pour WebSockets — la classe URLSessionWebSocketTask. Aucune bibliothèque tierce n'est nécessaire. Écrivons un client simple.

\n\n

Étape 1. Créer une connexion WebSocket

\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("Connexion WebSocket établie")\n        receiveMessage()\n    }\n    \n    func disconnect() {\n        webSocketTask?.cancel(with: .normalClosure, reason: nil)\n        print("Connexion fermée")\n    }\n}\n
\n\n

C'est une enveloppe de base. La méthode resume() lance la connexion — sans elle, rien ne se passera. Retenez-le comme un mantra : appelez toujours resume().

\n\n

Étape 2. Envoyer et recevoir des messages

\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("Erreur d'envoi : \\(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("Message reçu : \\(text)")\n                

Blogs

Book Recommendations