Swift पर WebSocket: वास्तविक समय अनुप्रयोग A से Z तक

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

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

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

परिचय: Swift डेवलपर के लिए WebSocket क्यों महत्वपूर्ण है

\n

आधुनिक मोबाइल और डेस्कटॉप अनुप्रयोगों में तेजी से डेटा आदान-प्रदान की आवश्यकता बढ़ रही है। चाहे वह चैट हो, स्टॉक टर्मिनल हो, ऑनलाइन गेम हो या push सूचना प्रणाली हो - उपयोगकर्ता वास्तविक समय में प्रतिक्रिया की उम्मीद करते हैं। WebSocket प्रोटोकॉल ऐसे कार्यों के लिए मानक बन गया है, और Swift (iOS/macOS) पारिस्थितिकी तंत्र में इसका समर्थन URLSessionWebSocketTask के माध्यम से मूल रूप से लागू किया गया है।

\n

इस लेख में, हम Swift पर WebSocket के साथ काम करने के पूरे चक्र को समझेंगे: कनेक्शन सेटअप से लेकर पूर्ण वास्तविक समय अनुप्रयोग बनाने तक। आप सीखेंगे कि सामान्य गलतियों से कैसे बचें, पुनः कनेक्शन कैसे व्यवस्थित करें और WebSocket को MVVM आर्किटेक्चर में कैसे एकीकृत करें।

\n\n

Swift में WebSocket की मूल बातें: URLSessionWebSocketTask

\n

iOS 13 और macOS 10.15 से शुरू करके, Apple Foundation के भाग के रूप में अंतर्निहित क्लास URLSessionWebSocketTask प्रदान करता है। यह बुनियादी परिदृश्यों के लिए तृतीय-पक्ष लाइब्रेरी (जैसे Starscream) को जोड़ने की आवश्यकता को समाप्त करता है।

\n\n

WebSocket कनेक्शन बनाना

\n

कनेक्शन स्थापित करने के लिए, एक URLSession सत्र बनाना और कॉन्फ़िगरेशन सेट करना आवश्यक है:

\n
import Foundation\n\nclass WebSocketManager {\n    private var webSocketTask: URLSessionWebSocketTask?\n    private let session: URLSession\n    \n    init() {\n        let config = URLSessionConfiguration.default\n        config.timeoutIntervalForRequest = 30\n        config.waitsForConnectivity = true\n        session = URLSession(configuration: config, delegate: self, delegateQueue: OperationQueue())\n    }\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

waitsForConnectivity पर ध्यान दें - यह नेटवर्क उपलब्ध होने पर स्वचालित रूप से कनेक्शन बहाल करने की अनुमति देता है।

\n\n

संदेश भेजना और प्राप्त करना

\n

WebSocket दो प्रकार के संदेशों का समर्थन करता है: टेक्स्ट (String) और बाइनरी (Data)। भेजने का एक उदाहरण देखें:

\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\nfunc sendData(_ data: Data) {\n    let message = URLSessionWebSocketTask.Message.data(data)\n    webSocketTask?.send(message) { error in\n        // त्रुटि प्रबंधन\n    }\n}
\n

संदेश प्राप्त करने के लिए, receive का पुनरावर्ती कॉल उपयोग किया जाता है:

\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            // सुनना जारी रखें\n            self?.receiveMessage()\n        case .failure(let error):\n            print("प्राप्त करने में त्रुटि: \\(error)")\n        }\n    }\n}
\n

महत्वपूर्ण: receive का कॉल केवल एक संदेश को संसाधित करता है। निरंतर डेटा प्राप्त करने के लिए, इसे सफलता क्लोजर के अंदर बार-बार कॉल करना होगा।

\n\n

Swift पर वास्तविक समय अनुप्रयोग की आर्किटेक्चर

\n

औद्योगिक उपयोग के लिए WebSocket की आर्किटेक्चर पर विचार करना आवश्यक है। नेटवर्क लॉजिक को UI से अलग करने के लिए प्रोटोकॉल और डेलिगेट के साथ सेवा स्तर का उपयोग करने की अनुशंसा की जाती है।

\n\n

WebSocket सेवा का प्रोटोकॉल

\n
protocol WebSocketServiceProtocol: AnyObject {\n    var isConnected: Bool { get }\n    func connect()\n    func disconnect()\n    f                

ब्लॉग

पुस्तक अनुशंसाएँ