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)
चैट या सूचना प्रणाली बनाने के लिए, अक्सर संदेशों को प्रसारित करने की आवश्यकता होती है
पुस्तकालय में भी
जावा भू-स्थान और मानचित्रों के लिए: लाइब्रेरीज़, API और उदाहरण
Juniper: आधुनिक वेब अनुप्रयोगों के लिए Rust पर एक सुरुचिपूर्ण GraphQL लाइब्रेरी
JavaScript (Node.js) QR कोड जनरेटर: qrcode और qr-image लाइब्रेरी
जावास्क्रिप्ट (Node.js) के लिए HTTP-क्लाइंट: API के साथ काम करने के लिए शीर्ष लाइब्रेरी
Rust में डेटा वैलिडेशन: validator लाइब्रेरी