在 WebSocket 中获取完整 URL

我正在使用 golang示例之一来构建 WebSocket 服务器。根据示例,结构Client访问websocket.Conn herewebsocket.Conn有一个Request方法返回*http.Request.

我的想法是根据用户用于进入应用程序的子域为用户订阅不同的频道。

那么是否有可能获得用户在订阅 websocket 时点击的完整 URL?使用示例代码我认为ws.Conn.Request().URL.Host会给我类似的东西,ws://channel1.lvh.me:8080/sync但我得到的路径是:“/chat”。

是否可以获得用户用于连接到 websocket 的完整 URL?提前致谢。


红颜莎娜
浏览 766回答 2
2回答

眼眸繁星

检查主机头以获取请求的主机:host := c.Request().Host所述Request.URL字段被从HTTP请求URI解析。对于大多数请求,请求 URI 仅包含路径和查询。应用程序可以根据主机标头和应用程序所服务的协议的知识重建完整的 URL。例如,如果应用程序正在侦听 HTTP 请求(或使用 HTTP 进行握手的 WS 请求),则完整 URL 为:u := *c.Request().URLu.Host = c.Request().Hostu.Scheme = "http"

MMTTMM

func (*Conn) Request 回报 *http.Requestfunc (ws *Conn) Request() *http.Requesthttp.Request从http包中检查您会发现它有一个URL *url.URL类型。这意味着您应该获得完整的网址:ws.Request().URL.Path
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go