modulepackage
0.1.0
Repository: https://github.com/tomakado/websocketproxy.git
Documentation: pkg.go.dev
# README
WebsocketProxy 
WebsocketProxy is an http.Handler interface build on top of gorilla/websocket that you can plug into your existing Go web server to provide WebSocket reverse proxy.
⚠ NOTE: This is a fork of library by Koding. Original library seems abandoned. I'm going to support this fork, so feel free to open your issues and PRs.
Install
go get github.com/tomakado/websocketproxy
Example
Below is a simple server that proxies to the given backend URL
package main
import (
"flag"
"net/http"
"net/url"
"github.com/tomakado/websocketproxy"
)
var (
flagBackend = flag.String("backend", "", "Backend URL for proxying")
)
func main() {
u, err := url.Parse(*flagBackend)
if err != nil {
log.Fatalln(err)
}
if err = http.ListenAndServe(":80", websocketproxy.NewProxy(u)); 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
Differences with original library and TODOs
- Switched to Go modules
- TODO: integrated with GitHub Actions
- TODO: updated tests
- TODO: golangci-lint
- TODO: fixed TODOs in code
# Functions
NewProxy returns a new Websocket reverse proxy that rewrites the URL's to the scheme, host and base path provider in target.
ProxyHandler returns a new http.Handler interface that reverse proxies the request to the given target.
# Variables
DefaultDialer is a dialer with all fields set to the default zero values.
DefaultUpgrader specifies the parameters for upgrading an HTTP connection to a WebSocket connection.
# Structs
WebsocketProxy is an HTTP Handler that takes an incoming WebSocket connection and proxies it to another server.