Swift (iOS/macOS) के लिए WebSocket लाइब्रेरीज़: Starscream और URLSessionWebSocketTask
\n\nWebSocket एक प्रोटोकॉल है जो क्लाइंट (iOS/macOS ऐप) और सर्वर के बीच एक स्थायी द्वि-दिशात्मक कनेक्शन प्रदान करता है। HTTP के विपरीत, कनेक्शन स्थापित होने के बाद, बार-बार अनुरोध किए बिना रीयल-टाइम में डेटा स्थानांतरित किया जा सकता है। Swift के लिए दो मुख्य दृष्टिकोण हैं: अंतर्निहित URLSessionWebSocketTask (iOS 13/macOS 10.15 से उपलब्ध) का उपयोग करना और तृतीय-पक्ष लाइब्रेरी Starscream (पुराने संस्करणों का समर्थन करती है और उन्नत कार्यक्षमता प्रदान करती है) का उपयोग करना।
1. URLSessionWebSocketTask — Swift में नेटिव WebSocket
\n\niOS 13 और macOS 10.15 से शुरू करके, Apple ने URLSession में सीधे WebSocket समर्थन जोड़ा। इसका मतलब है कि बुनियादी परिदृश्यों के लिए अतिरिक्त निर्भरताएँ स्थापित करने की आवश्यकता नहीं है।
कनेक्शन और संदेश भेजने का उदाहरण
\n\nimport Foundation\n\nclass WebSocketManager: NSObject {\n private var webSocketTask: URLSessionWebSocketTask?\n private let session = URLSession(configuration: .default)\n \n func connect() {\n guard let url = URL(string: "wss://echo.websocket.org") else { return }\n webSocketTask = session.webSocketTask(with: url)\n webSocketTask?.resume()\n receiveMessage()\n }\n \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("भेजने में त्रुटि: \\(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("प्राप्त हुआ: \\(text)")\n case .data(let data):\n print("बाइनरी डेटा प्राप्त हुआ: \\(data.count) बाइट्स")\n @unknown default:\n break\n }\n self?.receiveMessage() // सुनना जारी रखें\n case .failure(let error):\n print("प्राप्त करने में त्रुटि: \\(error.localizedDescription)")\n }\n }\n }\n \n func disconnect() {\n webSocketTask?.cancel(with: .normalClosure, reason: nil)\n }\n}\n\nURLSessionWebSocketTask के लाभ
\n- \n
- कोई निर्भरता नहीं — सब कुछ पहले से सिस्टम में मौजूद है। \n
- नेटिव एकीकरण बैकग्राउंड टास्क और App Transport Security के साथ। \n
- समर्थन Apple द्वारा और OS अपडेट के साथ अपडेट। \n
कमियाँ
\n- \n
- न्यूनतम संस्करण iOS 13 / macOS 10.15। \n
- रीकनेक्शन और ping/pong का अंतर्निहित समर्थन नहीं (मैन्युअल रूप से लागू करना होगा)। \n
- सेटिंग्स में कम लचीलापन। \n
2. Starscream — Swift के लिए शक्तिशाली और लचीली WebSocket लाइब्रेरी
\n\nStarscream Swift के लिए सबसे लोकप्रिय तृतीय-पक्ष WebSocket लाइब्रेरी है। यह iOS 8+, macOS 10.10+, साथ ही watchOS और tvOS का समर्थन करती है। Starscream अंतर्निहित रीकनेक्शन तंत्र, स्वचालित ping/pong और SSL/TLS समर्थन प्रदान करती है।
\n\nSwift Package Manager के माध्यम से स्थापना
\n// Package.swift में या Xcode के माध्यम से: File → Add Packages...\n// URL: https://github.com/daltoniam/Starscream.git\n// संस्करण: 4.0.0 और उससे ऊपर\n\nStarscream का उपयोग करने का उदाहरण
\n\nimport Starscream\n\nclass StarscreamManager: WebSocketDelegate {\n var socket: WebSocket?\n \n func setupConnection() {\n var request = URLRequest(url: URL(string: "wss://echo.websocket.org")!)\n request.timeoutInterval = 5\n socket = WebSocket(request: request)\n socket?.delegate = self\n socket?.connect()\n }\