Pourquoi les WebSockets sont-ils un super-pouvoir pour le développeur Swift ?
\n\nImaginez : 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\nDans 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\nQue sont les WebSockets et en quoi sont-ils meilleurs que l'API REST ?
\n\nWebSockets 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\nPour 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\nQuand 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
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\nConfiguration de WebSocket en Swift : du début à la première connexion
\n\nSwift dispose d'un support intégré pour WebSockets — la classe URLSessionWebSocketTask. Aucune bibliothèque tierce n'est nécessaire. Écrivons un client simple.
Étape 1. Créer une connexion WebSocket
\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("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\nC'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().
Étape 2. Envoyer et recevoir des messages
\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("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