我正在使用 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"
MMTTMM
TA贡献1869条经验 获得超4个赞
func (*Conn) Request
回报 *http.Request
func (ws *Conn) Request() *http.Request
http.Request
从http
包中检查您会发现它有一个URL *url.URL
类型。这意味着您应该获得完整的网址:
ws.Request().URL.Path
- 2 回答
- 0 关注
- 747 浏览
添加回答
举报
0/150
提交
取消