X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/a58e9ca25aaa0963545f256985eb75b2f840e80f..b47472f012130d22bd30969b2a273b91ffe41b51:/services/ws/server.go diff --git a/services/ws/server.go b/services/ws/server.go index 8870ca1df4..081ff53b30 100644 --- a/services/ws/server.go +++ b/services/ws/server.go @@ -1,3 +1,7 @@ +// Copyright (C) The Arvados Authors. All rights reserved. +// +// SPDX-License-Identifier: AGPL-3.0 + package main import ( @@ -6,13 +10,14 @@ import ( "sync" "time" + "git.curoverse.com/arvados.git/sdk/go/arvados" "github.com/coreos/go-systemd/daemon" ) type server struct { httpServer *http.Server listener net.Listener - wsConfig *wsConfig + cluster *arvados.Cluster eventSource *pgEventSource setupOnce sync.Once } @@ -36,26 +41,38 @@ func (srv *server) Run() error { func (srv *server) setup() { log := logger(nil) - ln, err := net.Listen("tcp", srv.wsConfig.Listen) + var listen arvados.URL + for listen, _ = range srv.cluster.Services.Websocket.InternalURLs { + break + } + ln, err := net.Listen("tcp", listen.Host) if err != nil { - log.WithField("Listen", srv.wsConfig.Listen).Fatal(err) + log.WithField("Listen", listen).Fatal(err) } log.WithField("Listen", ln.Addr().String()).Info("listening") + client := arvados.Client{} + client.APIHost = srv.cluster.Services.Controller.ExternalURL.Host + client.AuthToken = srv.cluster.SystemRootToken + client.Insecure = srv.cluster.TLS.Insecure + srv.listener = ln srv.eventSource = &pgEventSource{ - DataSource: srv.wsConfig.Postgres.ConnectionString(), - QueueSize: srv.wsConfig.ServerEventQueue, + DataSource: srv.cluster.PostgreSQL.Connection.String(), + MaxOpenConns: srv.cluster.PostgreSQL.ConnectionPool, + QueueSize: srv.cluster.API.WebsocketServerEventQueue, } + srv.httpServer = &http.Server{ - Addr: srv.wsConfig.Listen, + Addr: listen.Host, ReadTimeout: time.Minute, WriteTimeout: time.Minute, MaxHeaderBytes: 1 << 20, Handler: &router{ - Config: srv.wsConfig, + cluster: srv.cluster, + client: client, eventSource: srv.eventSource, - newPermChecker: func() permChecker { return newPermChecker(srv.wsConfig.Client) }, + newPermChecker: func() permChecker { return newPermChecker(client) }, }, }