// RegisterServer registers the handlers for the websocket server // it's a bridge between station and websocket server func RegisterServer(station irisStation, server Server, logger *logger.Logger) { c := server.Config() if c.Endpoint == "" { return } websocketHandler := func(ctx context.IContext) { if err := server.Upgrade(ctx); err != nil { logger.Panic(err) } } if c.Headers != nil && len(c.Headers) > 0 { // only for performance matter just re-create the websocketHandler if we have headers to set websocketHandler = func(ctx context.IContext) { for k, v := range c.Headers { ctx.SetHeader(k, v) } if err := server.Upgrade(ctx); err != nil { logger.Panic(err) } } } station.H_("GET", c.Endpoint, websocketHandler) // serve the client side on domain:port/iris-ws.js station.StaticContent("/iris-ws.js", "application/json", clientSource) }