Skip to content

Commit 6e3062f

Browse files
committed
docs: upd the fdxserver usage
1 parent 2014925 commit 6e3062f

1 file changed

Lines changed: 20 additions & 23 deletions

File tree

README.md

Lines changed: 20 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,47 +23,44 @@ The primary use case for `fdx-proxy` is to integrate it with an external service
2323
In your external service, use `fdx-proxy` to implement a full-duplex server that listens for WebSocket connections from the proxy client. Here is an example:
2424

2525
```go
26-
package main
27-
2826
import (
2927
"fmt"
30-
"github.com/gin-gonic/gin"
3128
proxy "github.com/yuuavwa/fdx-proxy"
3229
)
3330

34-
func serverProxyHandler(c *gin.Context) {
31+
var serverCtrl *proxy.FullDuplexServerController
32+
serverCtrl, _ = proxy.NewFullDuplexServerController()
33+
34+
// in your gin router handler
35+
func ProxyHandler(c *gin.Context) {
3536
targetID := c.Param("target_id")
36-
fmt.Println("Proxy targetID:", targetID)
37-
ctrl, err := proxy.NewFullDuplexServerController(c, targetID)
37+
err := serverCtrl.AddFullDuplexConnController(c, targetID)
3838
if err != nil {
3939
panic(err)
4040
}
41+
// ...
42+
}
4143

42-
// Handle incoming requests over WebSocket
43-
for {
44-
// Example request setup
44+
func MyTask(target_id string) {
45+
if ctrl, err := serverCtrl.GetFullDuplexConnController(target_id); ctrl != nil && err == nil {
4546
ReqMethod := "GET"
4647
ReqHeaders := map[string]string{}
4748
ReqBody := ""
48-
49-
// Sending example requests asynchronously
50-
go func() {
51-
ReqURL := "https://www.example.com/"
52-
status, res_body, err := ctrl.CallAPI(targetID, ReqMethod, ReqURL, ReqHeaders, ReqBody)
53-
if err != nil {
54-
fmt.Println("CallAPI error:", err)
55-
}
56-
fmt.Printf("Request URL: %v, Status: %v, Response Body: %v\n", ReqURL, status, res_body)
57-
}()
58-
59-
// Sleep to throttle request rate
60-
time.Sleep(time.Millisecond * 100)
49+
ReqURL := "https://www.this-is-just-a-test.com/"
50+
// here to use CallAPI to proxy the request through the websocket connection
51+
status, res_body, err := serverCtrl.CallAPI(target_id, ReqMethod, ReqURL, ReqHeaders, ReqBody)
52+
if err != nil {
53+
panic(err)
54+
}
55+
fmt.Println(status, res_body)
56+
// ...
6157
}
6258
}
6359

6460
func main() {
6561
router := gin.Default()
66-
router.GET("/api/EstablishFullDuplexChannel/:target_id", serverProxyHandler)
62+
router.GET("/api/EstablishFullDuplexChannel/:target_id", ProxyHandler)
63+
go MyTask("192.168.0.100:5000")
6764
router.Run(":8080") // Start server on port 8080
6865
}
6966
```

0 commit comments

Comments
 (0)