Go:将websocket请求发送到代理端口



我有一个Envoy代理实例,配置为代理http和websocket请求。请注意,这不是CONNECT代理。我希望我的websocket客户端创建一个websocket请求,就好像它正在将其发送到原始目的地一样,然后将有效负载传递给代理的侦听器。

连接到本地代理的推荐方式是什么?我相信这取决于所使用的特定Go websocket包。我可以看到允许覆盖http的包。已使用客户端,但目标地址是使用指定的websocket URL确定的。我唯一的选择是直接将请求发送到ws://proxy_ip:proxy_port/path,并使用代理配置为用于路由的某个自定义HTTP标头指定目的地。我不太喜欢这种方法。

我想拨一个与请求中不同的地址

使用Gorilla的拨号程序。NetDialContext拨打不同于请求的地址:

d := websocket.Dialer{
NetDialContext: func(ctx context.Context, network, addr string) (net.Conn, error) {
return net.DialContext(ctx, network, "proxy_ip:proxy_port")
},
}
c, r, err := d.Dial("ws://example.com/path", nil)
if err != nil {
// handle error
}

最新更新