A fast, well-tested and widely used WebSocket implementation for Go.
Go to file
codetriage-readme-bot 071913c407 Add CodeTriage badge to gorilla/websocket
Adds a badge showing the number of people helping this repo on CodeTriage.

[![Open Source Helpers](https://www.codetriage.com/gorilla/websocket/badges/users.svg)](https://www.codetriage.com/gorilla/websocket)

## What is CodeTriage?

CodeTriage is an Open Source app that is designed to make contributing to Open Source projects easier. It works by sending subscribers a few open issues in their inbox. If subscribers get busy, there is an algorithm that backs off issue load so they do not get overwhelmed

[Read more about the CodeTriage project](https://www.codetriage.com/what).

## Why am I getting this PR?

Your project was picked by the human, @schneems. They selected it from the projects submitted to https://www.codetriage.com and hand edited the PR. How did your project get added to [CodeTriage](https://www.codetriage.com/what)? Roughly 9 months ago, [gauravsak](https://github.com/gauravsak) added this project to CodeTriage in order to start contributing.

## What does adding a badge accomplish?

Adding a badge invites people to help contribute to your project. It also lets developers know that others are invested in the longterm success and maintainability of the project.

You can see an example of a CodeTriage badge on these popular OSS READMEs:

- [![](https://www.codetriage.com/rails/rails/badges/users.svg)](https://www.codetriage.com/rails/rails) https://github.com/rails/rails
- [![](https://www.codetriage.com/crystal-lang/crystal/badges/users.svg)](https://www.codetriage.com/crystal-lang/crystal) https://github.com/crystal-lang/crystal

## Have a question or comment?

While I am a bot, this PR was manually reviewed and monitored by a human - @schneems. My job is writing commit messages and handling PR logistics.

If you have any questions, you can reply back to this PR and they will be answered by @schneems. If you do not want a badge right now, no worries, close the PR, you will not hear from me again.

Thanks for making your project Open Source! Any feedback is greatly appreciated.
2018-02-18 13:13:08 -06:00
examples Don't log 1006 error in chat example 2018-01-09 12:15:58 -08:00
.gitignore Meaningful names for hub 2016-05-18 08:56:16 -06:00
.travis.yml Add Go 1.9 to Travis config 2017-09-13 22:11:54 -07:00
AUTHORS Relicense to the Gorilla WebSocket Authors. 2014-04-18 14:25:11 -07:00
LICENSE Relicense to the Gorilla WebSocket Authors. 2014-04-18 14:25:11 -07:00
README.md Add CodeTriage badge to gorilla/websocket 2018-02-18 13:13:08 -06:00
client.go Add SOCKS5 support 2017-11-30 17:43:01 -08:00
client_clone.go Update cloneTLSConfig to use Go 1.8 Config.Clone method 2017-02-18 08:27:10 -08:00
client_clone_legacy.go Update cloneTLSConfig to use Go 1.8 Config.Clone method 2017-02-18 08:27:10 -08:00
client_server_test.go Add SOCKS5 support 2017-11-30 17:43:01 -08:00
client_test.go Replace parseURL() with net/url.Parse() (#290) 2017-10-12 19:08:58 -07:00
compression.go fix flate write pool size to work with best compression 2017-01-25 02:15:04 +03:00
compression_test.go remove test as HuffmanOnly compression level not defined in Go < 1.7 2017-01-25 02:34:04 +03:00
conn.go Improve control message handler doc 2018-01-31 17:52:56 -08:00
conn_broadcast_test.go Prepared Messages (#211) 2017-02-14 09:41:18 -08:00
conn_read.go Reduce memory allocations in NextReader, NextWriter 2016-05-31 05:44:45 -07:00
conn_read_legacy.go Reduce memory allocations in NextReader, NextWriter 2016-05-31 05:44:45 -07:00
conn_test.go Update with gofmt on tip 2017-11-23 00:11:29 -08:00
doc.go Improve check origin documentation 2018-01-25 10:51:21 -08:00
example_test.go Fix go vet warning 2016-03-02 14:56:29 -08:00
json.go Misc cleanup 2017-07-18 13:21:30 -07:00
json_test.go Provide all close frame data to application 2015-08-11 10:14:32 -07:00
mask.go Update with gofmt on tip 2017-11-23 00:11:29 -08:00
mask_safe.go Add safe maskBytes 2016-12-31 20:13:41 -08:00
mask_test.go Add safe maskBytes 2016-12-31 20:13:41 -08:00
prepared.go Prepared Messages (#211) 2017-02-14 09:41:18 -08:00
prepared_test.go Prepared Messages (#211) 2017-02-14 09:41:18 -08:00
proxy.go Add SOCKS5 support 2017-11-30 17:43:01 -08:00
server.go Improve check origin documentation 2018-01-25 10:51:21 -08:00
server_test.go Use ASCII case folding in same origin test 2017-11-27 16:10:45 -08:00
util.go Update with gofmt on tip 2017-11-23 00:11:29 -08:00
util_test.go Add parseExtensions test case (#310) 2017-12-05 11:45:40 -08:00
x_net_proxy.go Add SOCKS5 support 2017-11-30 17:43:01 -08:00

README.md

Gorilla WebSocket

Gorilla WebSocket is a Go implementation of the WebSocket protocol.

Build Status GoDoc Open Source Helpers

Documentation

Status

The Gorilla WebSocket package provides a complete and tested implementation of the WebSocket protocol. The package API is stable.

Installation

go get github.com/gorilla/websocket

Protocol Compliance

The Gorilla WebSocket package passes the server tests in the Autobahn Test Suite using the application in the examples/autobahn subdirectory.

Gorilla WebSocket compared with other packages

github.com/gorilla golang.org/x/net
RFC 6455 Features
Passes Autobahn Test SuiteYesNo
Receive fragmented messageYesNo, see note 1
Send close messageYesNo
Send pings and receive pongsYesNo
Get the type of a received data messageYesYes, see note 2
Other Features
Compression ExtensionsExperimentalNo
Read message using io.ReaderYesNo, see note 3
Write message using io.WriteCloserYesNo, see note 3

Notes:

  1. Large messages are fragmented in Chrome's new WebSocket implementation.
  2. The application can get the type of a received data message by implementing a Codec marshal function.
  3. 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.