The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
goflyway
Posts with mentions or reviews of goflyway.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-12-14.
-
Reverse HTTP proxy over WebSocket in Go (Part 1)
In Go, inconshreveable/ngrok and coyove/goflyway is well known, especially ngrok is popular among developers as a SaaS service.
wsp
Posts with mentions or reviews of wsp.
We have used some of these posts to build our list of alternatives
and similar projects. The last one was on 2021-12-14.
-
Reverse HTTP proxy over WebSocket in Go (Part 4)
func (s *Server) request(w http.ResponseWriter, r *http.Request) { // (omit): [1]: Receive requests to be proxied // [2]: Take a WebSocket connection available from pools for relaying received requests. request := NewConnectionRequest(s.Config.GetTimeout()) // "Dispatcher" is running in a separate thread from the server by `go s.dispatchConnections()`. // It waits to receive requests to dispatch connection from available pools to clients requests. // https://github.com/hgsgtk/wsp/blob/ea4902a8e11f820268e52a6245092728efeffd7f/server/server.go#L93 // // Notify request from handler to dispatcher through Server.dispatcher channel. s.dispatcher <- request // Dispatcher tries to find an available connection pool, // and it returns the connection through Server.connection channel. // https://github.com/hgsgtk/wsp/blob/ea4902a8e11f820268e52a6245092728efeffd7f/server/server.go#L189 // // Here waiting for a result from dispatcher. connection := <-request.connection if connection == nil { // It means that dispatcher has set `nil` which is a system error case that is // not expected in the normal flow. wsp.ProxyErrorf(w, "Unable to get a proxy connection") return } // [3]: Send the request to the peer through the WebSocket connection. if err := connection.proxyRequest(w, r); err != nil { // An error occurred throw the connection away log.Println(err) connection.Close() // Try to return an error to the client // This might fail if response headers have already been sent wsp.ProxyError(w, err) } }
-
Reverse HTTP proxy over WebSocket in Go (Part 3)
This handler process registered an idle connection that can be used for relay. NewConnection() function mark a new connection as a usable connection for relay in the pool and start a thread (technically, start a new goroutine running) that keeps reading messages over the connected WebSocket connection from the wsp client.
-
Reverse HTTP proxy over WebSocket in Go (Part 2)
Let's read the Go code. First is the main function (cmd/client/main.go), which is the entry point.
-
Reverse HTTP proxy over WebSocket in Go (Part 1)
However, maintenance has stopped since the days of Go 1.6, so I'll proceed with this post based on code hgsgtk/wsp that I forked and modified for the Go situation in 2021 (Thank you root-gg).
What are some alternatives?
When comparing goflyway and wsp you can also consider the following projects:
wstunnel - Tunnel all your traffic over Websocket or HTTP2 - Bypass firewalls/DPI - Static binary available
wsp - HTTP tunnel over Websocket
wstunnel - tunnel over websocket
chezmoi-net - Golang bidirectional jsonrpc2 implementation over Web Socket Or UDP using KCP
ngrok - Unified ingress for developers
brook - A cross-platform programmable network tool
gomitmproxy - Simple golang mitm proxy implementation