Headers for websocket peer and unique ids

Using Godot 4.2 and C#, I’ve encountered 2 questions when working with websocket peers. This stems from how I used to implment websockets in other engines/ frameworks. I am using the websocket peer for the server side, so clients from javascript connect via websocket, set the auth header and then connect via a TPC server, after the TCP connection is established I create the WebsocketPeer out of it.

  1. Can you get some kind of unique id from the websocket peer, some identifier that’s unique to the connection?

  2. How can you get the headers from the websocket peer (during handshake?), the handshake_headers are empty, and they seem to be only used for when you set the headers, not when you receive the headers

Relevant code

public partial class WebSocketServer : Node
{
    private TcpServer tcpServer;
    private List<WebSocketPeer> clients;
    private GameManager gameManager;
    private const int Port = 9080;

    public override void _Ready()
    {
        tcpServer = new TcpServer();
        clients = new List<WebSocketPeer>();

        gameManager = GetNode<GameManager>("/root/GameManager");

        StartServer();
    }

    private void StartServer()
    {
        Error result = tcpServer.Listen(Port);
        if (result == Error.Ok)
        {
            GD.Print("Server is listening on port " + Port);
            SetProcess(true);
        }
        else
        {
            GD.PrintErr("Failed to start server: " + result);
        }
    }

    public override void _Process(double delta)
    {
        if (tcpServer.IsConnectionAvailable())
        {
            var peer = tcpServer.TakeConnection();
            var webSocketPeer = new WebSocketPeer();
            Error handshakeResult = webSocketPeer.AcceptStream(peer);

            if (handshakeResult == Error.Ok)
            {
                Connect(webSocketPeer);
            }
            else
            {
                GD.PrintErr("Failed to establish WebSocket connection: " + handshakeResult);
            }
        }

    private void Connect(WebSocketPeer client)
    {
        // TODO: jwt auth
        GD.Print("Headers", client.HandshakeHeaders);
        var id = client.GetSomeUniqueId(); //TODO;
        clients.Add(client);
        var id = gameManager.AddPlayer()
        GD.Print("Client connected");
    }