support running with socket
This commit is contained in:
		
							
								
								
									
										24
									
								
								gin.go
									
									
									
									
									
								
							
							
						
						
									
										24
									
								
								gin.go
									
									
									
									
									
								
							@ -9,7 +9,9 @@ import (
 | 
			
		||||
	"github.com/julienschmidt/httprouter"
 | 
			
		||||
	"html/template"
 | 
			
		||||
	"math"
 | 
			
		||||
    "net"
 | 
			
		||||
	"net/http"
 | 
			
		||||
    "os"
 | 
			
		||||
	"sync"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
@ -21,6 +23,9 @@ const (
 | 
			
		||||
	MIMEXML2     = "text/xml"
 | 
			
		||||
	MIMEPlain    = "text/plain"
 | 
			
		||||
	MIMEPOSTForm = "application/x-www-form-urlencoded"
 | 
			
		||||
 | 
			
		||||
    UNIX = "unix"
 | 
			
		||||
    TCP  = "tcp"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type (
 | 
			
		||||
@ -133,6 +138,25 @@ func (engine *Engine) Run(addr string) {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (engine *Engine) RunSocket(addr string) {
 | 
			
		||||
    debugPrint("Listening and serving HTTP on %s", addr)
 | 
			
		||||
    os.Remove(addr)     
 | 
			
		||||
 | 
			
		||||
    listener, err := net.Listen(UNIX, addr)
 | 
			
		||||
    if err != nil {
 | 
			
		||||
        panic(err)
 | 
			
		||||
    }
 | 
			
		||||
    os.Chmod(0666)
 | 
			
		||||
 | 
			
		||||
    server := http.Server{Handler: engine}
 | 
			
		||||
    err = server.Serve(listener)
 | 
			
		||||
    if err != nil {
 | 
			
		||||
        listener.Close() 
 | 
			
		||||
        panic(err)
 | 
			
		||||
    }
 | 
			
		||||
    listener.Close() 
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (engine *Engine) RunTLS(addr string, cert string, key string) {
 | 
			
		||||
	debugPrint("Listening and serving HTTPS on %s", addr)
 | 
			
		||||
	if err := http.ListenAndServeTLS(addr, cert, key, engine); err != nil {
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user