koding / websocketproxy

WebSocket reverse proxy handler for Go
http://godoc.org/github.com/koding/websocketproxy
MIT License
427 stars 120 forks source link

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.

Install

go get github.com/koding/websocketproxy

Example

Below 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")
)

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

    err = http.ListenAndServe(":80", websocketproxy.NewProxy(u))
    if err != nil {
        log.Fatalln(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