An open API service indexing awesome lists of open source software.

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

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
})

```