go, 接受客户端的url中带参数

在Go语言的net/http包中,http.HandleFunc() 函数本身并不直接支持在路由路径中捕获参数(如路径参数)。它主要用于将特定的路径模式映射到一个处理函数上,但它不支持变量路径段(如 /user/:id)

为了实现在HTTP请求路径中捕获参数(如路径参数或查询参数),你需要使用更灵活的路由库,如gorilla/mux。gorilla/mux 是一个强大的URL路由库,支持变量路由、子路由、模式匹配等功能。

1> 安装 gorilla/mux:

go get -u github.com/gorilla/mux

2> demo 代码 :

import (

// "crypto/tls"

"fmt"

// "fmt"

"flag"

"log"

"net/http"

"os"

"sync"

"github.com/gorilla/mux"

"github.com/gorilla/websocket"

)

var upgrader = websocket.Upgrader{

ReadBufferSize: settings.NetWork.ReadBufferSize.Value,

WriteBufferSize: settings.NetWork.WriteBufferSize.Value,

CheckOrigin: func(r *http.Request) bool { return true }, // 允许来自任何源的连接,或者根据你的需求设置

}

var addr = flag.String("addr", ":443", "http service address")

var certFile = flag.String("cert", "E:/Projects/gitee/skweb/QCRM/src/static/cert/server.crt", "SSL certificate file")

var keyFile = flag.String("key", "E:/Projects/gitee/skweb/QCRM/src/static/cert/server.key", "SSL private key file")

flag.Parse()

mr := mux.NewRouter()

mr.HandleFunc("/ws/{token}", func(w http.ResponseWriter, r *http.Request) {

vars := mux.Vars(r)

token := vars["token"]

fmt.Println("token:", token)

// 升级HTTP请求到WebSocket连接

ws, err := upgrader.Upgrade(w, r, nil)

if err != nil {

log.Println(err)

return

}

fmt.Println("key: ", r.Header.Get("Sec-Websocket-Key"))

fmt.Println("subProtocol : ", ws.Subprotocol())

fmt.Println("network: ", ws.LocalAddr().Network(), ", ", ws.LocalAddr().String())

fmt.Println("remoteAddr: ", ws.RemoteAddr().Network(), ", ", ws.RemoteAddr().String())

fmt.Println("Header: ", r.Header)

fmt.Println("Host: ", r.Host)

fmt.Println("Context: ", r.Context())

fmt.Println("Form: ", r.Form)

fmt.Println("UserAgent: ", r.UserAgent())

fmt.Println("URL: ", r.URL)

username, password, ok := r.BasicAuth()

fmt.Println("username: ", username, ", password: ", password, ", ok: ", ok)

//

g_semaphore

g_waitGroup.Add(1) //计数器+1;

// 为每个连接启动一个新的goroutine

go newConn(ws)

}).Methods("GET")

// 设置HTTPS服务器

log.Fatal(http.ListenAndServeTLS(*addr, *certFile, *keyFile, mr))

客户端使用:

wss://192.168.8.131/ws/XiXiangCP001

其中 XiXiangCP001 为 token

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

风尘无名

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值