package socket import ( protoSocket "git.toki-labs.com/toki/proto-socket/go" "nhooyr.io/websocket" "git.toki-labs.com/toki/alt/services/api/internal/config" apiContracts "git.toki-labs.com/toki/alt/services/api/internal/contracts" ) const ( serverName = "alt-api" serverVersion = "dev" defaultAltProtocolVersion = "alt.v1" ) func NewServer(cfg config.Config) *protoSocket.WsServer { options := protoSocket.WsServerOptions{} if len(cfg.WSOriginPatterns) > 0 { options.AcceptOptions = &websocket.AcceptOptions{ OriginPatterns: cfg.WSOriginPatterns, } } server := protoSocket.NewWsServerWithOptions(cfg.Host, cfg.Port, cfg.SocketPath, options, func(conn *websocket.Conn) *protoSocket.WsClient { return protoSocket.NewWsClient(conn, cfg.HeartbeatIntervalSec, cfg.HeartbeatWaitSec, apiContracts.ParserMap()) }) server.OnClientConnected = registerSessionHandlers return server }