2013-10-29 17:29:20 +04:00
|
|
|
# Gorilla WebSocket
|
2013-10-16 20:41:47 +04:00
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
Gorilla WebSocket is a [Go](http://golang.org/) implementation of the
|
2013-10-16 20:41:47 +04:00
|
|
|
[WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol.
|
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
### Documentation
|
2013-10-16 20:41:47 +04:00
|
|
|
|
2014-03-21 00:26:28 +04:00
|
|
|
* [API Reference](http://godoc.org/github.com/gorilla/websocket)
|
2013-10-16 20:41:47 +04:00
|
|
|
* [Chat example](https://github.com/gorilla/websocket/tree/master/examples/chat)
|
2014-03-21 00:26:28 +04:00
|
|
|
* [File watch example](https://github.com/gorilla/websocket/tree/master/examples/filewatch)
|
2013-10-16 20:41:47 +04:00
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
### Status
|
2013-10-16 20:41:47 +04:00
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
The Gorilla WebSocket package provides a complete and tested implementation of
|
|
|
|
the [WebSocket](http://www.rfc-editor.org/rfc/rfc6455.txt) protocol. The
|
|
|
|
package API is stable.
|
2013-10-16 20:41:47 +04:00
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
### Installation
|
2013-10-16 20:41:47 +04:00
|
|
|
|
|
|
|
go get github.com/gorilla/websocket
|
|
|
|
|
2013-10-29 17:29:20 +04:00
|
|
|
### Protocol Compliance
|
|
|
|
|
|
|
|
The Gorilla WebSocket package passes the server tests in the [Autobahn WebSockets Test
|
|
|
|
Suite](http://autobahn.ws/testsuite) using the application in the [examples/autobahn
|
|
|
|
subdirectory](https://github.com/gorilla/websocket/tree/master/examples/autobahn).
|
|
|
|
|
|
|
|
### Gorilla WebSocket compared with other packages
|
|
|
|
|
|
|
|
<table>
|
|
|
|
<tr>
|
|
|
|
<th></th>
|
|
|
|
<th><a href="http://godoc.org/github.com/gorilla/websocket">gorilla</a></th>
|
|
|
|
<th><a href="http://godoc.org/code.google.com/p/go.net/websocket">go.net</a></th>
|
|
|
|
</tr>
|
|
|
|
<tr>
|
|
|
|
<tr><td>Protocol support</td><td>RFC 6455</td><td>RFC 6455</td></tr>
|
|
|
|
<tr><td>Limit size of received message</td><td>Yes</td><td>No</td></tr>
|
|
|
|
<tr><td>Send pings and receive pongs</td><td>Yes</td><td>No</td></tr>
|
|
|
|
<tr><td>Send close message</td><td>Yes</td><td>No</td></tr>
|
|
|
|
<tr><td>Read message using io.Reader</td><td>Yes</td><td>No, see note</td></tr>
|
|
|
|
<tr><td>Write message using io.WriteCloser</td><td>Yes</td><td>No, see note</td></tr>
|
|
|
|
<tr><td>Encode, decode JSON message</td><td>Yes</td><td>Yes</td></tr>
|
|
|
|
</table>
|
|
|
|
|
|
|
|
Note: The go.net io.Reader and io.Writer operate across WebSocket message
|
|
|
|
boundaries. Read returns when the input buffer is full or a message boundary is
|
|
|
|
encountered, Each call to Write sends a message. The Gorilla io.Reader and
|
|
|
|
io.WriteCloser operate on a single WebSocket message.
|
|
|
|
|