https://github.com/mediabuyerbot/go-wirenet-http-tunnel
Reverse HTTP tunnel for go-wirenet
https://github.com/mediabuyerbot/go-wirenet-http-tunnel
go-tunnel reverse-proxy tunnel wirenet wirenet-reverse
Last synced: 2 months ago
JSON representation
Reverse HTTP tunnel for go-wirenet
- Host: GitHub
- URL: https://github.com/mediabuyerbot/go-wirenet-http-tunnel
- Owner: mediabuyerbot
- License: mit
- Created: 2020-07-02T12:43:29.000Z (almost 5 years ago)
- Default Branch: master
- Last Pushed: 2020-07-04T08:46:21.000Z (almost 5 years ago)
- Last Synced: 2024-06-20T12:13:16.322Z (11 months ago)
- Topics: go-tunnel, reverse-proxy, tunnel, wirenet, wirenet-reverse
- Language: Go
- Homepage:
- Size: 14.6 KB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-wirenet-http-tunnel
```
wirenet client or server <--------> wirenet handler <---------------> http server
tunnel http request```
## Examples
tunnel.go
```go
// server side
wire, err := wirenet.Mount(":8989")
// OR client side
wire, err := wirenet.Join(":8989")...
tunnel := httptunnel.New()
wire.Stream("tunnel", tunnel.Handle)
```client.go OR server.go
```go
// server side
wire, err := wirenet.Mount(":8989")
// OR client side
wire, err := wirenet.Join(":8989")
...// Make client
client := httptunnel.NewClient(wire, "tunnel")
ctx := context.Background()
// 1. One request in one stream
session := hub.findSession("id")
sessCtx := WithSession(ctx, session.ID())
req, err := http.NewRequestWithContext(sessCtx, "GET", "http://google.com", nil)
resp, err := client.Do(req)
...
// 2. Group related queries in one stream
err = client.WithTx(ctx, session.ID(), func(streamCtx context.Context) error {
req, err := http.NewRequestWithContext(streamCtx, "GET", "http://domain.com/1", nil)
resp, err := client.Do(req)
// ...
req, err = http.NewRequestWithContext(streamCtx, "GET", "http://domain.com/2", nil)
resp, err = client.Do(req)
// ...
req, err = http.NewRequestWithContext(streamCtx, "GET", "http://domain.com/2", nil)
resp, err = client.Do(req)
return nil
})
```