Go (Golang) के लिए Gorilla WebSocket लाइब्रेरी — पूर्ण गाइड

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

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

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

Go (Golang) के लिए Gorilla WebSocket लाइब्रेरी



Gorilla WebSocket Go (Golang) भाषा में WebSocket प्रोटोकॉल के साथ काम करने के लिए सबसे लोकप्रिय और स्थिर लाइब्रेरी में से एक है। यह Gorilla Toolkit इकोसिस्टम का हिस्सा है और डेवलपर्स को रियल-टाइम एप्लिकेशन बनाने के लिए एक शक्तिशाली, लचीला और उच्च-प्रदर्शन वाला टूल प्रदान करता है: चैट, रियल-टाइम सूचनाएं, ऑनलाइन गेम, मॉनिटरिंग पैनल और भी बहुत कुछ।



लाइब्रेरी RFC 6455 विनिर्देश को पूरी तरह से लागू करती है, सर्वर और क्लाइंट दोनों पक्षों का समर्थन करती है, और स्वचालित रूप से संदेश विखंडन, पिंग/पोंग तंत्र और कनेक्शन नियंत्रण को संभालती है। Gorilla WebSocket बिना किसी बाहरी निर्भरता के शुद्ध Go में लिखा गया है, जो इसे हल्का और तेज़ बनाता है।



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

  • WebSocket प्रोटोकॉल (RFC 6455) का पूर्ण समर्थन।
  • सरल और सहज API।
  • टेक्स्ट और बाइनरी संदेशों का समर्थन।
  • कनेक्शन बनाए रखने के लिए स्वचालित पिंग/पोंग प्रबंधन।
  • अनुरोध उत्पत्ति (Origin) की जाँच करने की क्षमता।
  • संदेश संपीड़न (permessage-deflate) का समर्थन।
  • TLS/HTTPS के साथ काम करना।
  • उच्च प्रदर्शन और कम मेमोरी खपत।


इंस्टॉलेशन

लाइब्रेरी स्थापित करने के लिए, कमांड चलाएँ:

go get github.com/gorilla/websocket

इसके बाद, अपने कोड में पैकेज आयात करें:

import "github.com/gorilla/websocket"


Go पर WebSocket सर्वर का उदाहरण

नीचे एक सरल सर्वर दिया गया है जो WebSocket कनेक्शन स्वीकार करता है और प्राप्त संदेशों को वापस भेजता है (इको सर्वर):



package main

import ( "fmt" "log" "net/http"

"github.com/gorilla/websocket")

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

func echoHandler(w http.ResponseWriter, r *http.Request) { // WebSocket कनेक्शन स्थापित करें conn, err := upgrader.Upgrade(w, r, nil) if err != nil { log.Print("अपग्रेड त्रुटि:", err) return } defer conn.Close()

// संदेश पढ़ने का अनंत लूप for { messageType, message, err := conn.ReadMessage() if err != nil { log.Println("पढ़ने में त्रुटि:", err) break } log.Printf("संदेश प्राप्त हुआ: %s", message)

// संदेश वापस भेजें err = conn.WriteMessage(messageType, message) if err != nil { log.Println("लिखने में त्रुटि:", err) break } }}

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


Go पर WebSocket क्लाइंट

एक सरल क्लाइंट का उदाहरण जो सर्वर से जुड़ता है और संदेश भेजता है:



package main

import ( "fmt" "log" "net/url"

"github.com/gorilla/websocket")

func main() { u := url.URL{Scheme: "ws", Host: "localhost:8080", Path: "/echo"} fmt.Printf("कनेक्ट हो रहे हैं %s", u.String())

conn, _, err := websocket.DefaultDialer.Dial(u.String(), nil) if err != nil { log.Fatal("कनेक्शन त्रुटि:", err) } defer conn.Close()

// टेक्स्ट संदेश भेजें err = conn.WriteMessage(websocket.TextMessage, []byte("नमस्ते, WebSocket!")) if err != nil { log.Fatal("भेजने में त्रुटि:", err) }

// उत्तर पढ़ें _, message, err := conn.ReadMessage() if err != nil { log.Fatal("पढ़ने में त्रुटि:", err) } fmt.Printf("उत्तर प्राप्त हुआ: %s", message)}


एकाधिक क्लाइंट के साथ काम करना (broadcast)

चैट या सूचना प्रणाली बनाने के लिए, अक्सर संदेशों को प्रसारित करने की आवश्यकता होती है

अनुशंसाएँ