登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-25 08:18:23 111浏览 收藏

大家好,我们又见面了啊~本文《Go:将 websocket 请求发送到代理端口》的内容中将会涉及到等等。如果你正在学习Golang相关知识,欢迎关注我,以后会给大家带来更多Golang相关文章,希望我们能一起进步!下面就开始本文的正式内容~

问题内容

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

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


正确答案


使用 Gorilla's Dialer.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
}

今天关于《Go:将 websocket 请求发送到代理端口》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>