WebsocketProxy
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.
Install
go get github.com/button-chen/websocketproxy
Example
Below is a simple server that proxies to the given backend URL
package main
import (
"flag"
"net/http"
"net/url"
"github.com/button-chen/websocketproxy"
)
var (
flagBackend = flag.String("backend", "", "Backend URL for proxying")
)
func main() {
u, err := url.Parse(*flagBackend)
if err != nil {
log.Fataln(err)
}
proxy := websocketproxy.NewProxy()
proxy.AddBackend(u)
err := http.ListenAndServe(":80", proxy)
if err != nil {
log.Fataln(err)
}
}
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