mirror of
https://github.com/kataras/iris.git
synced 2025-03-14 08:16:28 +01:00
Add ReadBufferSize and WriteBufferSize to the iris-ws, disable header copy also
This commit is contained in:
parent
647f0d704c
commit
0d482508fc
|
@ -40,17 +40,23 @@ type Websocket struct {
|
||||||
// Headers the response headers before upgrader
|
// Headers the response headers before upgrader
|
||||||
// Default is empty
|
// Default is empty
|
||||||
Headers map[string]string
|
Headers map[string]string
|
||||||
|
// ReadBufferSize is the buffer size for the underline reader
|
||||||
|
ReadBufferSize int
|
||||||
|
// WriteBufferSize is the buffer size for the underline writer
|
||||||
|
WriteBufferSize int
|
||||||
}
|
}
|
||||||
|
|
||||||
// DefaultWebsocket returns the default config for iris-ws websocket package
|
// DefaultWebsocket returns the default config for iris-ws websocket package
|
||||||
func DefaultWebsocket() *Websocket {
|
func DefaultWebsocket() *Websocket {
|
||||||
return &Websocket{
|
return &Websocket{
|
||||||
WriteTimeout: DefaultWriteTimeout,
|
WriteTimeout: DefaultWriteTimeout,
|
||||||
PongTimeout: DefaultPongTimeout,
|
PongTimeout: DefaultPongTimeout,
|
||||||
PingPeriod: DefaultPingPeriod,
|
PingPeriod: DefaultPingPeriod,
|
||||||
MaxMessageSize: DefaultMaxMessageSize,
|
MaxMessageSize: DefaultMaxMessageSize,
|
||||||
Headers: make(map[string]string, 0),
|
ReadBufferSize: 4096,
|
||||||
Endpoint: "",
|
WriteBufferSize: 4096,
|
||||||
|
Headers: make(map[string]string, 0),
|
||||||
|
Endpoint: "",
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
15
http.go
15
http.go
|
@ -311,7 +311,6 @@ func (s *Server) listen() error {
|
||||||
if s.started {
|
if s.started {
|
||||||
return errServerAlreadyStarted.Return()
|
return errServerAlreadyStarted.Return()
|
||||||
}
|
}
|
||||||
|
|
||||||
listener, err := net.Listen("tcp4", s.Config.ListeningAddr)
|
listener, err := net.Listen("tcp4", s.Config.ListeningAddr)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -362,7 +361,7 @@ func (s *Server) serve(l net.Listener) error {
|
||||||
|
|
||||||
// Open opens/starts/runs/listens (to) the server, listen tls if Cert && Key is registed, listenUNIX if Mode is registed, otherwise listen
|
// Open opens/starts/runs/listens (to) the server, listen tls if Cert && Key is registed, listenUNIX if Mode is registed, otherwise listen
|
||||||
func (s *Server) Open() error {
|
func (s *Server) Open() error {
|
||||||
if s.started {
|
if s.IsListening() {
|
||||||
return errServerAlreadyStarted.Return()
|
return errServerAlreadyStarted.Return()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -389,16 +388,14 @@ func (s *Server) Open() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// close closes the server
|
// close closes the server
|
||||||
func (s *Server) close() error {
|
func (s *Server) close() (err error) {
|
||||||
if !s.started {
|
if !s.started || s.listener == nil {
|
||||||
return errServerIsClosed.Return()
|
return errServerIsClosed.Return()
|
||||||
}
|
}
|
||||||
|
s.started = false
|
||||||
|
err = s.listener.Close()
|
||||||
|
|
||||||
if s.listener != nil {
|
return
|
||||||
s.started = false
|
|
||||||
return s.listener.Close()
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// errHandler returns na error with message: 'Passed argument is not func(*Context) neither an object which implements the iris.Handler with Serve(ctx *Context)
|
// errHandler returns na error with message: 'Passed argument is not func(*Context) neither an object which implements the iris.Handler with Serve(ctx *Context)
|
||||||
|
|
13
iris.go
13
iris.go
|
@ -299,14 +299,24 @@ func (s *Framework) NoListen() *Server {
|
||||||
return s.HTTPServer
|
return s.HTTPServer
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseWithErr terminates the server and returns an error if any
|
||||||
|
func CloseWithErr() error {
|
||||||
|
return Default.CloseWithErr()
|
||||||
|
}
|
||||||
|
|
||||||
//Close terminates the server and panic if error occurs
|
//Close terminates the server and panic if error occurs
|
||||||
func Close() {
|
func Close() {
|
||||||
Default.Close()
|
Default.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CloseWithErr terminates the server and returns an error if any
|
||||||
|
func (s *Framework) CloseWithErr() error {
|
||||||
|
return s.closeServer()
|
||||||
|
}
|
||||||
|
|
||||||
//Close terminates the server and panic if error occurs
|
//Close terminates the server and panic if error occurs
|
||||||
func (s *Framework) Close() {
|
func (s *Framework) Close() {
|
||||||
s.Must(s.closeServer())
|
s.Must(s.CloseWithErr())
|
||||||
}
|
}
|
||||||
|
|
||||||
// OnError registers a custom http error handler
|
// OnError registers a custom http error handler
|
||||||
|
@ -1143,7 +1153,6 @@ func StaticContent(reqPath string, contentType string, content []byte) RouteName
|
||||||
func (api *muxAPI) StaticContent(reqPath string, cType string, content []byte) func(string) { // func(string) because we use that on websockets
|
func (api *muxAPI) StaticContent(reqPath string, cType string, content []byte) func(string) { // func(string) because we use that on websockets
|
||||||
modtime := time.Now()
|
modtime := time.Now()
|
||||||
modtimeStr := modtime.UTC().Format(config.TimeFormat)
|
modtimeStr := modtime.UTC().Format(config.TimeFormat)
|
||||||
|
|
||||||
h := func(ctx *Context) {
|
h := func(ctx *Context) {
|
||||||
if t, err := time.Parse(config.TimeFormat, ctx.RequestHeader(ifModifiedSince)); err == nil && modtime.Before(t.Add(config.StaticCacheDuration)) {
|
if t, err := time.Parse(config.TimeFormat, ctx.RequestHeader(ifModifiedSince)); err == nil && modtime.Before(t.Add(config.StaticCacheDuration)) {
|
||||||
ctx.Response.Header.Del(contentType)
|
ctx.Response.Header.Del(contentType)
|
||||||
|
|
|
@ -73,7 +73,7 @@ func newServer(c *config.Websocket) *server {
|
||||||
onConnectionListeners: make([]ConnectionFunc, 0),
|
onConnectionListeners: make([]ConnectionFunc, 0),
|
||||||
}
|
}
|
||||||
|
|
||||||
s.upgrader = websocket.New(s.handleConnection)
|
s.upgrader = websocket.Custom(s.handleConnection, s.config.ReadBufferSize, s.config.WriteBufferSize, false)
|
||||||
go s.serve() // start the server automatically
|
go s.serve() // start the server automatically
|
||||||
return s
|
return s
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue
Block a user