gpt4 book ai didi

带有 Web 代理的 Golang Gorilla Websocket

转载 作者:数据小太阳 更新时间:2023-10-29 03:27:28 25 4
gpt4 key购买 nike

我正在使用 Gorilla/Websocket 开发 POC,通过 Web 代理与 Websocket 检查网站“echo.websocket.org”进行通信。

我正在使用免费的在线代理“hide.me/en/”进行测试。

当我只是尝试与“echo.websocket.org”(服务器端)通信时,我的客户端 Websocket POC 会收到响应。

但是当我尝试添加代理手势时,一切都出错了:(

这是我的代码示例:

package main

import (
"flag"
"log"
"net/url"
"os"
"os/signal"
"time"

"github.com/gorilla/websocket"
"net/http"
)

var addrWebsocket = flag.String("addrWebsocket", "echo.websocket.org", "http service address")

func main() {
flag.Parse()
log.SetFlags(0)

interrupt := make(chan os.Signal, 1)
signal.Notify(interrupt, os.Interrupt)

//Initialize the WebSocket URL and the Path to follow
uWS := url.URL{Scheme: "wss", Host: *addrWebsocket}

//Initialize the Proxy URL and the Path to follow
uProxy, _ := url.Parse("https://hide.me/en/proxy")

//Set the Dialer (especially the proxy)
dialer := websocket.Dialer{
Proxy: http.ProxyURL(uProxy),
}
//dialer := websocket.DefaultDialer ==> with this default dialer, it works !

c, _, err := dialer.Dial(uWS.String(), nil) // ==> With the proxy config, it fails here !
defer c.Close()

done := make(chan struct{})

go func() {
defer c.Close()
defer close(done)
for {
_, message, err := c.ReadMessage()
if err != nil {
log.Println("read:", err)
return
}
log.Printf("recv: %s", message)
}
}()

ticker := time.NewTicker(time.Second)
defer ticker.Stop()

for {
select {
case t := <-ticker.C:
err := c.WriteMessage(websocket.TextMessage, []byte(t.String()))
if err != nil {
log.Println("write:", err)
return
}
case <-interrupt:
log.Println("interrupt")
err := c.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, ""))
if err != nil {
log.Println("write close:", err)
return
}
select {
case <-done:
case <-time.After(time.Second):
}
c.Close()
return
}
}
}

我是 Go 的初学者,所以如果我的代码不清晰和干净,请不要犹豫,纠正我。

感谢您的帮助!

最佳答案

代码是正确的。服务器https://hide.me不是代理服务器。

关于带有 Web 代理的 Golang Gorilla Websocket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36356835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com