Clustered LiveView app web socket

Can you confirm that it’s the server that initiates the upgrade to socket, or is that done from the client side as I’ve been assuming until now?