Go पर WebSocket: शुरुआत से real-time एप्लिकेशन बनाना

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

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

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

WebSocket पर Go: real-time एप्लिकेशन बनाना



आधुनिक वेब एप्लिकेशन में अक्सर क्लाइंट और सर्वर के बीच तत्काल डेटा ट्रांसफर की आवश्यकता होती है। पारंपरिक HTTP अनुरोध अपने "अनुरोध-प्रतिक्रिया" चक्र के साथ उन कार्यों के लिए उपयुक्त नहीं हैं जहां गति महत्वपूर्ण है: ऑनलाइन चैट, स्टॉक कोट्स, मल्टीप्लेयर गेम या रीयल-टाइम नोटिफिकेशन। यहां WebSocket मदद करता है - एक प्रोटोकॉल जो स्थायी दो-तरफा कनेक्शन प्रदान करता है। इस लेख में, हम Go (Golang) पर WebSocket को लागू करने का तरीका समझेंगे, बुनियादी सर्वर से लेकर पूर्ण real-time एप्लिकेशन तक।



WebSocket क्या है और Go क्यों?



WebSocket TCP के ऊपर एक प्रोटोकॉल है जो क्लाइंट (ब्राउज़र) और सर्वर के बीच स्थायी कनेक्शन स्थापित करने की अनुमति देता है। हैंडशेक के बाद, डेटा अतिरिक्त HTTP हेडर के बिना दोनों दिशाओं में स्थानांतरित होता है, जिससे विलंबता काफी कम हो जाती है।



Go क्यों? Go भाषा WebSocket सर्वर के लिए आदर्श है, इसकी अंतर्निहित समवर्तीता समर्थन (गोरूटीन और चैनल), उच्च प्रदर्शन और नेटवर्क कोड लिखने में सरलता के कारण। Node.js के विपरीत, Go को बाहरी इवेंट लूप की आवश्यकता नहीं है, और इसकी संकलित प्रकृति गति में लाभ देती है।



Go पर बुनियादी WebSocket सर्वर



Go में WebSocket के साथ काम करने के लिए, हम लोकप्रिय लाइब्रेरी gorilla/websocket का उपयोग करेंगे। यह एक सुविधाजनक API प्रदान करता है और प्रोटोकॉल के विवरणों को संभालता है।



लाइब्रेरी इंस्टॉल करें:

go get github.com/gorilla/websocket


अब हम एक सरल इको सर्वर लिखेंगे जो क्लाइंट से जो कुछ भी प्राप्त करता है उसे वापस भेजता है।



package main

import ( "log" "net/http" "github.com/gorilla/websocket")

var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // डेवलपमेंट के लिए। प्रोडक्शन में Origin जांचें। },}

func echoHandler(w http.ResponseWriter, r *http.Request) { conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("Upgrade failed:", err) return } defer conn.Close()

for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Read error:", err) break } log.Printf("प्राप्त: %s", message)

if err := conn.WriteMessage(messageType, message); err != nil { log.Println("Write error:", err) break } }}

func main() { http.HandleFunc("/ws", echoHandler) log.Println("सर्वर :8080 पर शुरू हुआ") log.Fatal(http.ListenAndServe(":8080", nil))}


कोड की व्याख्या:

  • Upgrader — एक ऑब्जेक्ट जो HTTP कनेक्शन को WebSocket में "अपग्रेड" करता है।
  • CheckOrigin — अनुरोध के मूल की जांच करने का फ़ंक्शन। प्रोडक्शन में इसे कॉन्फ़िगर करना सुनिश्चित करें।
  • conn.ReadMessage() और conn.WriteMessage() — संदेश पढ़ने/लिखने के लिए मुख्य विधियाँ।
  • for लूप त्रुटि होने तक कनेक्शन को खुला रखता है।


WebSocket पर real-time चैट की आर्किटेक्चर



इको सर्वर एक आधार है, लेकिन real-time एप्लिकेशन, जैसे चैट, के लिए अधिक जटिल लॉजिक की आवश्यकता होती है। आइए एक आर्किटेक्चर पर विचार करें जहां कई क्लाइंट सर्वर के माध्यम से संदेशों का आदान-प्रदान कर सकते हैं।



मुख्य घटक:

  • Hub — केंद्रीय प्रबंधक, सक्रिय कनेक्शनों की सूची संग्रहीत करता है।
  • Client — एक संरचना जो एक WebSocket कनेक्शन का प्रतिनिधित्व करती है।
  • चैनल (channels) — गोरूटीन के बीच सुरक्षित डेटा ट्रांसफर के लिए।


package main

import ( "log" "net/http" "github.com/gorilla/websocket")

var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true },}

// Clien ```

ब्लॉग

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