WebSocket reverse proxy handler for Go
Switch branches/tags
Nothing to show
Latest commit 7338eea Mar 29, 2017 @rjeczalik rjeczalik committed on GitHub Merge pull request #11 from slimsag/master
Add WebsocketProxy.Director optional function to forward additional headers


WebsocketProxy GoDoc Build Status

WebsocketProxy is an http.Handler interface build on top of gorilla/websocket that you can plug into your existing Go webserver to provide WebSocket reverse proxy.


go get github.com/koding/websocketproxy


Below is a simple server that proxies to the given backend URL

package main

import (


var (
	flagBackend = flag.String("backend", "", "Backend URL for proxying")

func main() {
	u, err := url.Parse(*flagBackend)
	if err != nil {

	err := http.ListenAndServe(":80", websocketproxy.NewProxy(u))
	if err != nil {

Save it as proxy.go and run as:

go run proxy.go -backend ws://example.com:3000

Now all incoming WebSocket requests coming to this server will be proxied to ws://example.com:3000