为了账号安全,请及时绑定邮箱和手机立即绑定

在 WebSocket 中获取完整 URL

在 WebSocket 中获取完整 URL

Go
红颜莎娜 2021-12-20 09:50:57
我正在使用 golang示例之一来构建 WebSocket 服务器。根据示例,结构Client访问websocket.Conn here并websocket.Conn有一个Request方法返回*http.Request.我的想法是根据用户用于进入应用程序的子域为用户订阅不同的频道。那么是否有可能获得用户在订阅 websocket 时点击的完整 URL?使用示例代码我认为ws.Conn.Request().URL.Host会给我类似的东西,ws://channel1.lvh.me:8080/sync但我得到的路径是:“/chat”。是否可以获得用户用于连接到 websocket 的完整 URL?提前致谢。
查看完整描述

2 回答

?
眼眸繁星

TA贡献1873条经验 获得超9个赞

检查主机头以获取请求的主机:


host := c.Request().Host

所述Request.URL字段被从HTTP请求URI解析。对于大多数请求,请求 URI 仅包含路径和查询。


应用程序可以根据主机标头和应用程序所服务的协议的知识重建完整的 URL。例如,如果应用程序正在侦听 HTTP 请求(或使用 HTTP 进行握手的 WS 请求),则完整 URL 为:


u := *c.Request().URL

u.Host = c.Request().Host

u.Scheme = "http"


查看完整回答
反对 回复 2021-12-20
?
MMTTMM

TA贡献1869条经验 获得超4个赞

func (*Conn) Request 回报 *http.Request

func (ws *Conn) Request() *http.Request

http.Requesthttp包中检查您会发现它有一个URL *url.URL类型。这意味着您应该获得完整的网址:

ws.Request().URL.Path


查看完整回答
反对 回复 2021-12-20
  • 2 回答
  • 0 关注
  • 747 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信