-
-
Notifications
You must be signed in to change notification settings - Fork 53
Timeouts
Neffos provides a wrapper of neffos.Namespaces and neffos.Events structures to deal with custom Write and Read deadtimes/timeouts, it's the neffos.WithTimeout.
Its outline looks like this:
// WithTimeout completes the `ConnHandler` interface.
// Can be used to register namespaces and events or just events on an empty namespace
// with Read and Write timeouts.
//
// See `New` and `Dial`.
type WithTimeout struct {
ReadTimeout time.Duration
WriteTimeout time.Duration
Namespaces Namespaces
Events Events
}It's easy to set timeouts, instead of var events = neffos.Namespaces{"namespace": neffos.Events: ...} you just wrap it with neffos.WithTimeout like this:
var events = neffos.WithTimeout {
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
Namespaces: neffos.Namespaces {
"namespace": neffos.Events {
"onMyEvent": func(c *neffos.NSConn, msg neffos.Message) error {
// [...]
},
},
},
}or for empty namespace:
var events = neffos.WithTimeout {
ReadTimeout: 60 * time.Second,
WriteTimeout: 60 * time.Second,
Events: neffos.Events {
"onMyEvent": func(c *neffos.NSConn, msg neffos.Message) error {
// [...]
},
},
}websocketServer := neffos.New(gobwas.DefaultUpgrader, events)websocketClient, err := neffos.Dial(
context.Background(),
gobwas.DefaultDialer,
"ws://localhost:8080/echo",
events,
)Of cource you could provide those timeouts based on what Upgrader and Dialer implementations are being used on Server and Client respectfully, i.e the gorilla's one has ReadTimeout and WriteTimeout optional fields that you can set on a custom gorilla/websocket.Upgrader structure but if you want a universal way to set your own timeouts in the connection handler level(namespaces, events) use the neffos.WithTimeout instead.
Home | About | Project | Getting Started | Technical Docs | Copyright © 2019-2023 Gerasimos Maropoulos. Documentation terms of use.
Getting started
Concepts
Messaging
Production
Scale out