The Gorilla WebSocket package provides a complete and tested implementation of the WebSocket protocol. The package API is stable.
go get github.com/gorilla/websocket
Gorilla WebSocket compared with other packages
|RFC 6455 Features|
|Passes Autobahn Test Suite||Yes||No|
|Receive fragmented message||Yes||No, see note 1|
|Send close message||Yes||No|
|Send pings and receive pongs||Yes||No|
|Get the type of a received data message||Yes||Yes, see note 2|
|Limit size of received message||Yes||No|
|Read message using io.Reader||Yes||No, see note 3|
|Write message using io.WriteCloser||Yes||No, see note 3|
- Large messages are fragmented in Chrome's new WebSocket implementation.
- The application can get the type of a received data message by implementing a Codec marshal function.
- The go.net io.Reader and io.Writer operate across WebSocket frame boundaries. Read returns when the input buffer is full or a frame boundary is encountered. Each call to Write sends a single frame message. The Gorilla io.Reader and io.WriteCloser operate on a single WebSocket message.