Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fiber Close

Go Reference

Simple package that fixes the known Fiber / FastHTTP issue with context closure on connection closure.

TL;DR FastHTTP doesn't close context when connection is closed.

More on this issue here: valyala/fasthttp#965 (comment)

Usage

Install fiberclose.

go get -u github.com/mymmrac/fiberclose

Use it for the Fiber app.

  1. Use middleware:
app.Use(fiberclose.Middleware())
  1. Always use fiber.Ctx.Context():
ctx := fCtx.Context()
  1. Use listener wrapper:
app.Listener(fiberclose.Listener(ln))

Full example:

package main

import (
	"fmt"
	"net"

	"github.com/gofiber/fiber/v3"

	"github.com/mymmrac/fiberclose"
)

func main() {
	app := fiber.New()
	// Use fiberclose middleware
	app.Use(fiberclose.Middleware())

	app.Get("/", func(fCtx fiber.Ctx) error {
		// Always use user context
		ctx := fCtx.Context()
		fmt.Println("Connection open")

		<-ctx.Done()

		fmt.Println("Connection closed")
		return nil
	})

	ln, err := net.Listen("tcp", ":8080")
	if err != nil {
		// ...
	}

	// Use fiberclose listener wrapper
	if err = app.Listener(fiberclose.Listener(ln)); err != nil {
		// ...
	}
}

About

Fix Fiber/FastHTTP context closure

Topics

Resources

Stars

Watchers

Forks

Releases

Contributors

Languages