Swift के लिए WebSocket लाइब्रेरीज़: Starscream और URLSessionWebSocketTask

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Swift (iOS/macOS) के लिए WebSocket लाइब्रेरीज़: Starscream और URLSessionWebSocketTask



WebSocket एक प्रोटोकॉल है जो एक TCP कनेक्शन के माध्यम से क्लाइंट और सर्वर के बीच पूर्ण-द्वैध संचार प्रदान करता है। Swift (iOS/macOS) इकोसिस्टम में, WebSocket के साथ काम करने के दो मुख्य दृष्टिकोण हैं: देशी कार्यान्वयन URLSessionWebSocketTask (iOS 13/macOS 10.15 से उपलब्ध) और लोकप्रिय तृतीय-पक्ष लाइब्रेरी Starscream। दोनों रीयल-टाइम के साथ प्रतिक्रियाशील एप्लिकेशन बनाने की अनुमति देते हैं: चैट, कोटेशन फ़ीड, मल्टीप्लेयर गेम आदि।



देशी कार्यान्वयन URLSessionWebSocketTask

iOS 13 के रिलीज़ के साथ, Apple ने Foundation फ्रेमवर्क में WebSocket के लिए अंतर्निहित समर्थन जोड़ा। यदि आपका एप्लिकेशन OS के आधुनिक संस्करणों पर लक्षित है, तो यह तृतीय-पक्ष निर्भरताओं को जोड़ने की आवश्यकता को समाप्त करता है।



मुख्य विशेषताएं:

  • async/await या कॉलबैक के माध्यम से पूरी तरह से अतुल्यकालिक कार्य
  • कनेक्शन जीवनचक्र का स्वचालित प्रबंधन
  • सही समाप्ति के लिए closeCode, closeReason का समर्थन
  • URLSession के साथ अंतर्निहित कार्य (टाइमआउट, कैशिंग नीतियों का समर्थन)


कनेक्शन और संदेश भेजने का उदाहरण:

import Foundation

class WebSocketManager { private var webSocketTask: URLSessionWebSocketTask? private let session = URLSession.shared func connect() { guard let url = URL(string: "wss://echo.websocket.org") else { return } webSocketTask = session.webSocketTask(with: url) webSocketTask?.resume() receiveMessage() } func sendMessage(_ text: String) { let message = URLSessionWebSocketTask.Message.string(text) webSocketTask?.send(message) { error in if let error = error { print("भेजने में त्रुटि: \\(error.localizedDescription)") } } } private func receiveMessage() { webSocketTask?.receive { [weak self] result in switch result { case .success(let message): switch message { case .string(let text): print("प्राप्त हुआ: \\(text)") case .data(let data): print("बाइनरी डेटा प्राप्त हुआ: \\(data)") @unknown default: fatalError() } // सुनना जारी रखें self?.receiveMessage() case .failure(let error): print("प्राप्त करने में त्रुटि: \\(error)") // संभवतः पुनः कनेक्ट करें } } } func disconnect() { webSocketTask?.cancel(with: .normalClosure, reason: nil) }}


Starscream — लचीली और सिद्ध लाइब्रेरी

Starscream Swift के लिए एक ओपन-सोर्स WebSocket लाइब्रेरी है, जिसे Dalton Cherry द्वारा लिखा गया है और समुदाय द्वारा समर्थित है। यह पुराने संस्करणों (iOS 8+) से शुरू होकर iOS, macOS, tvOS और watchOS पर काम करती है। Starscream कनेक्शन पर अधिक नियंत्रण प्रदान करता है और अतिरिक्त सुविधाओं जैसे संपीड़न (permessage-deflate) और कस्टम हेडर का समर्थन करता है।



Swift Package Manager के माध्यम से स्थापना:

// Package.swift में या Xcode के माध्यम से: File → Swift Packages → Add Package Dependency.package(url: "https://github.com/daltoniam/Starscream.git", from: "4.0.0")


मुख्य विशेषताएं:

  • सभी घटनाओं (कनेक्शन, डेटा प्राप्त करना, त्रुटियां, डिस्कनेक्ट) के लिए WebSocketDelegate का समर्थन
  • कनेक्शन बनाए रखने के लिए पिंग/पोंग का मैन्युअल प्रबंधन
  • बाइनरी डेटा (Data) और स्ट्रिंग (String/UTF-8) भेजने की क्षमता
  • SSL/TLS और स्व-हस्ताक्षरित प्रमाणपत्रों का समर्थन

अनुशंसाएँ