- Add parser map for contract type resolution - Update socket handlers with new message routing - Add parser map tests - Remove outdated code review and plan docs for G07
34 lines
1.1 KiB
Go
34 lines
1.1 KiB
Go
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"
|
|
"git.toki-labs.com/toki/alt/services/api/internal/workerclient"
|
|
)
|
|
|
|
const (
|
|
serverName = "alt-api"
|
|
serverVersion = "dev"
|
|
defaultAltProtocolVersion = "alt.v1"
|
|
)
|
|
|
|
var Worker workerclient.WorkerClient
|
|
|
|
func NewServer(cfg config.Config) *protoSocket.WsServer {
|
|
Worker = workerclient.New(cfg.WorkerSocketURL)
|
|
|
|
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
|
|
}
|