Go पर WebSocket: Golang में रीयल-टाइम एप्लिकेशन बनाना

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

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

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

Go पर WebSocket: Golang में रीयल-टाइम एप्लिकेशन बनाना



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



Go इस कार्य के लिए आदर्श है क्योंकि इसमें अंतर्निहित समवर्ती समर्थन (गोरूटीन और चैनल) और उच्च प्रदर्शन है। साथ मिलकर हम एक सरल WebSocket सर्वर लिखेंगे, एक चैट लागू करेंगे और सामान्य समस्याओं पर चर्चा करेंगे।



WebSocket क्या है और Go में इसकी आवश्यकता क्यों है?



WebSocket एक प्रोटोकॉल है जो TCP के ऊपर काम करता है। यह HTTP अनुरोध (हैंडशेक) के रूप में शुरू होता है, जिसके बाद कनेक्शन एक स्थायी द्वि-दिशात्मक चैनल में "अपग्रेड" हो जाता है। लॉन्ग पोलिंग या Server-Sent Events के विपरीत, WebSocket सर्वर और क्लाइंट को बिना कनेक्शन को फिर से बनाए किसी भी समय डेटा भेजने की अनुमति देता है।



Go पर WebSocket का उपयोग करने के लाभ:



  • समवर्तीता: गोरूटीन आसानी से हजारों एक साथ कनेक्शनों को संभाल सकते हैं।
  • प्रदर्शन: प्रति कनेक्शन न्यूनतम मेमोरी खपत।
  • सरलता: मानक लाइब्रेरी net/http और पैकेज gorilla/websocket कोड को संक्षिप्त बनाते हैं।


WebSocket का उपयोग अक्सर इसमें किया जाता है:

  • चैट सिस्टम और मैसेंजर
  • ऑनलाइन एडिटर (Google Docs)
  • ट्रेडिंग टर्मिनल (स्टॉक कोट्स)
  • गेम और सिमुलेटर


Go में WebSocket की स्थापना और कॉन्फ़िगरेशन



Go की मानक लाइब्रेरी में WebSocket के लिए अंतर्निहित समर्थन नहीं है, लेकिन एक उत्कृष्ट पैकेज gorilla/websocket है। इसे स्थापित करें:



go get github.com/gorilla/websocket


हम एक न्यूनतम HTTP सर्वर बनाएंगे जो WebSocket कनेक्शनों को सेवा प्रदान करेगा। शुरू करने के लिए, हम एक हैंडलर फंक्शन लिखेंगे जो HTTP अनुरोध को WebSocket में "अपग्रेड" करता है।



package main

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

var upgrader = websocket.Upgrader{ CheckOrigin: func(r *http.Request) bool { return true // सभी ओरिजिन की अनुमति दें (डेवलपमेंट के लिए) },}

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

// संदेश पढ़ने का अनंत लूप for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("Read error:", err) break } log.Printf("Received: %s", message)

// इको-रिस्पॉन्स: वही संदेश वापस भेजें if err := conn.WriteMessage(messageType, message); err != nil { log.Println("Write error:", err) break } }}

func main() { http.HandleFunc("/ws", handleWebSocket) log.Println("Server started on :8080") log.Fatal(http.ListenAndServe(":8080", nil))}


यह कोड एक सरल इको सर्वर बनाता है। क्लाइंट ws://localhost:8080/ws से कनेक्ट होता है और सभी भेजे गए संदेश वापस प्राप्त करता है।



Go में WebSocket के साथ रीयल-टाइम चैट बनाना



अब कार्य को जटिल बनाते हैं: एक ऐसा चैट बनाएं जहां सभी कनेक्टेड क्लाइंट एक-दूसरे के संदेश देख सकें। इसके लिए हमें कनेक्शनों की सूची प्रबंधित करनी होगी और संदेशों को प्रसारित करना होगा।



मुख्य घटक:

  • Hub — केंद्रीय प्रबंधक जो क्लाइंट को पंजीकृत/हटाता है और संदेश प्रसारित करता है।
  • Clien

ब्लॉग

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