Swift पर WebSocket: iOS और macOS के लिए real-time एप्लिकेशन बनाना

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

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

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

Swift में WebSocket का परिचय: सिद्धांत से व्यवहार तक



आधुनिक मोबाइल और डेस्कटॉप एप्लिकेशन तेजी से डेटा ट्रांसमिशन की मांग करते हैं। चाहे वह चैट हो, स्टॉक टर्मिनल हो, ऑनलाइन गेम हो या मॉनिटरिंग सिस्टम — उपयोगकर्ता उम्मीद करते हैं कि जानकारी स्क्रीन को लगातार रिफ्रेश किए बिना रियल टाइम में अपडेट होगी। यहीं पर WebSocket प्रोटोकॉल मददगार साबित होता है।



क्लासिकल HTTP रिक्वेस्ट के विपरीत, जो "रिक्वेस्ट-रेस्पॉन्स" सिद्धांत पर काम करता है, WebSocket क्लाइंट और सर्वर के बीच एक स्थायी द्विदिश कनेक्शन स्थापित करता है। इसका मतलब है कि सर्वर बिना किसी पूर्व अनुरोध के किसी भी समय क्लाइंट को डेटा भेज सकता है। Apple इकोसिस्टम में WebSocket के साथ काम करने के लिए देशी समाधान (URLSessionWebSocketTask) और लोकप्रिय तृतीय-पक्ष लाइब्रेरी जैसे Starscream उपलब्ध हैं।



इस लेख में, हम समझेंगे कि अपने iOS और macOS के लिए Swift एप्लिकेशन में WebSocket को कैसे एकीकृत करें, कार्यशील कोड उदाहरण लिखेंगे और सर्वोत्तम प्रथाओं पर विचार करेंगे।



1. URLSession के माध्यम से WebSocket की देशी प्राप्ति



iOS 13 और macOS 10.15 से शुरू करते हुए, Apple URLSessionWebSocketTask क्लास के माध्यम से WebSocket के लिए अंतर्निहित समर्थन प्रदान करता है। यह सबसे सरल और अनुशंसित तरीका है, जिसमें तृतीय-पक्ष निर्भरताएँ स्थापित करने की आवश्यकता नहीं है।



कनेक्शन बनाना और कॉन्फ़िगर करना



शुरू करने के लिए, URLSession का एक इंस्टेंस बनाना और कॉन्फ़िगरेशन सेट करना आवश्यक है। फिर हम ws:// (या सुरक्षित कनेक्शन के लिए wss://) प्रोटोकॉल के साथ URL बनाते हैं और WebSocket टास्क बनाते हैं।



import Foundation

class WebSocketManager: NSObject { private var webSocketTask: URLSessionWebSocketTask? private let session: URLSession override init() { let config = URLSessionConfiguration.default self.session = URLSession(configuration: config, delegate: nil, delegateQueue: OperationQueue()) super.init() } func connect() { guard let url = URL(string: "wss://echo.websocket.org") else { return } webSocketTask = session.webSocketTask(with: url) webSocketTask?.resume() receiveMessage() } func disconnect() { webSocketTask?.cancel(with: .normalClosure, reason: nil) }}


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



WebSocket टेक्स्ट (URLSessionWebSocketTask.Message.string) और बाइनरी डेटा (.data) दोनों भेजने का समर्थन करता है। संदेश प्राप्त करने के लिए receive विधि को पुनरावर्ती रूप से कॉल करना आवश्यक है, क्योंकि यह एक बार में केवल एक संदेश को संसाधित करता है।



extension WebSocketManager {    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.count) बाइट्स")                @unknown default:                    print("अज्ञात संदेश प्रकार")                }                // पुनरावर्ती रूप से सुनना जारी रखें                self?.receiveMessage()            case .failure(let error):                print("प्राप्त करने में त्रुटि: \\(error.localizedDescription)")            }        }    }}


सफलता क्लोजर के अंदर receiveMessage() के पुनरावर्ती कॉल पर ध्यान दें — यह सुनिश्चित करता है कि आपका एप्लिकेशन लगातार नया डेटा प्राप्त करता रहेगा।

ब्लॉग

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