I've started this project out of curiosity how the WebSocket protocol is working under the hood. I really hope that I'll be able to finish it so that it could be used as a WebSocket library for Go in the feature.
Project status
It looks like it could be used already. There is some restructuring required to make this blazingly fast, but before that I need to make sure it supports everything I want correctly.
Understand available options for permessage-deflate and what they mean
Work on error handling, to report descriptive errors to api users
Write more tests (and test utils)
Upgrading HTTP to WebSocket
Checking handshake
Checking origin
Retrieving Sec-WebSocket-Key and generating access key
Resolving protocol
Checking for data sent after opening handshake but
before getting the opening confirmation