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/websocketproxyBelow is a simple server that proxies to the given backend URL
package main import ( "flag""net/http""net/url""github.com/koding/websocketproxy" ) var ( flagBackend=flag.String("backend", "", "Backend URL for proxying") ) funcmain(){u, err:=url.Parse(*flagBackend) iferr!=nil{log.Fatalln(err) } err=http.ListenAndServe(":80", websocketproxy.NewProxy(u)) iferr!=nil{log.Fatalln(err) } }Save it as proxy.go and run as:
go run proxy.go -backend ws://example.com:3000Now all incoming WebSocket requests coming to this server will be proxied to ws://example.com:3000