We design a cryptographic protocol to setup Secure Websocket(alias SWS) over plain HTTP site between http client and http server, which includes Nacl-based Certificates Exchanges and Crypto-Keys Distribution.
Cute, but impractical - makes too many assumptions, especially "yeah, let's ultimately trust the initial page load, what's the worst that could happen". You could load the initial page over HTTPS, but now you have two crypto stacks to worry about.
Am I missing anything?