फाइबर वेबसॉकेट उदाहरण

फाइबर के Fasthttp वेबसॉकेट कॉम्पोनेंट के आधार पर, *fiber.Ctx मेथड का उपयोग किया जाता है, जैसे Locals, Params, Query, और Cookies. यहां फाइबर में वेबसॉकेट का उपयोग करने का एक उदाहरण है।

नोट: Go संस्करण 1.18 और ऊपर की आवश्यकता है।

स्थापना

go get -u github.com/gofiber/fiber/v2
go get -u github.com/gofiber/contrib/websocket

फ़ंक्शन हस्ताक्षर

func New(handler func(*websocket.Conn), config ...websocket.Config) fiber.Handler {

विन्यास

गुणवत्ता प्रकार विवरण डिफ़ॉल्ट मान
Filter func(*fiber.Ctx) bool मिडलवेयर को छोड़ने के लिए एक फ़ंक्शन को परिभाषित करता है। nil
HandshakeTimeout time.Duration HandshakeTimeout कैसा समय लेने के लिए निर्धारित करता है। 0 (कोई समय सीमा नहीं)
Subprotocols []string Subprotocols निर्धारित करता है कि क्लाइंट द्वारा अनुरोधित सबप्रोटोकॉल्स। nil
Origins []string उपदेशित मूलों पर आधारित शानदार मूल। रिक्त होने पर, यह किसी भी मूल को स्वीकार करता है। nil
ReadBufferSize int ReadBufferSize संदेशों को प्राप्त करने के लिए I/O बफर का आकार निर्धारित करता है (बाइट में)। 0 (डिफ़ॉल्ट आकार)
WriteBufferSize int WriteBufferSize संदेशों को भेजने के लिए I/O बफर का आकार निर्धारित करता है (बाइट में)। 0 (डिफ़ॉल्ट आकार)
WriteBufferPool websocket.BufferPool WriteBufferPool लिखने के लिए उपयोग किए जाने वाले बफर पूल है। nil
EnableCompression bool EnableCompression यह निर्धारित करता है कि क्या क्लाइंट हर संदेश के लिए संपीड़न समझौता करें (RFC 7692)। false
RecoverHandler func(*websocket.Conn) void RecoverHandler एक पैनिक से पुन: प्राप्ति के लिए एक हैंडलिंग फ़ंक्शन है। defaultRecover

उदाहरण

package main

import (
	"log"
	"github.com/gofiber/fiber/v2"
	"github.com/gofiber/contrib/websocket"
)

func main() {
	app := fiber.New()

	app.Use("/ws", func(c *fiber.Ctx) error {
		// अगर क्लाइंट ने वेबसॉकेट प्रोटोकॉल को अपग्र
## पुनर्प्राप्ति मिडलवेयर का उपयोग के लिए विचार

आंतरिक कारणों के चलते, पुनर्प्राप्ति मिडलवेयर वर्तमान में वेबसॉकेट मिडलवेयर के साथ अनुपालनीय नहीं है। कृपया वेबसॉकेट अंत-स्थलों के लिए एक पुनर्प्राप्ति हैंडलर जोड़ने के लिए `config.RecoverHandler` का उपयोग करें। डिफ़ॉल्ट रूप में, `RecoverHandler` विनाश से पुनर्प्राप्ति करता है, स्टैक ट्रेस को stderr पर लिखता है, और पैनिक संदेश को **त्रुटि** फ़ील्ड में शामिल करता है।

```go
app := fiber.New()

app.Use(cache.New(cache.Config{
    Next: func(c *fiber.Ctx) bool {
        return strings.Contains(c.Route().Path, "/ws")
    },
}))

cfg := Config{
    RecoverHandler: func(conn *Conn) {
        if err := recover(); err != nil {
            conn.WriteJSON(fiber.Map{"customError": "त्रुटि हुई"})
        }
    },
}

app.Get("/ws/:id", websocket.New(func(c *websocket.Conn) {}, cfg))