gpt4 book ai didi

websocket - http.Handle ("/", websocket.Handler(EchoServer) EchoServer 可以获取ws以外的其他参数吗?

转载 作者:IT王子 更新时间:2023-10-29 00:40:41 24 4
gpt4 key购买 nike

我已经打开了一个 websocket 服务器来向 web 组件发送数据,

func WebSocketServer() {
http.Handle("/", websocket.Handler(Echoserver))
err := http.ListenAndServe(":8081", nil)
CheckError(err)
}

我想将一个额外的参数(msg,字符串类型)传递给处理函数(Echoserver)。

func Echoserver(ws *websocket.Conn, msg String) {
fmt.Println("Client Connected")
_ := websocket.JSON.Send(ws, msg);
}
}

是否可以使用上面的语法来做到这一点?如何使用附加参数调用 Echoserver?

最佳答案

我假设您在这里想要的是一个一致的 string 参数,它会为到/的所有连接返回。我使用了几种方法。 (这些特定的代码示例都没有经过测试;如果它们无法编译,我可以提取一些真实的代码。)

一种是让数据成为接收者。我最常将其与结构一起使用,但任何参数都可以。这仅适用于单个参数(但您当然可以将多个参数放在一个结构中)。当参数是“类对象”时,我喜欢这种方法。 (通常是一个包含其他方法的结构。)

type echoStuff string

var hey echoStuff = "Hey!"

http.Handle("/", websocket.Handler(hey.EchoServer))
err := http.ListenAndServe(":8081", nil)
CheckError(err)

func (msg echoStuff) Echoserver(ws *websocket.Conn) {
fmt.Println("Client Connected")
_ := websocket.JSON.Send(ws, msg);
}

另一种方法是使用闭包。当参数是“类似数据”时,我喜欢这种方法。 (类似于字符串或其他简单数据。请注意这种方法不需要创建本地类型。)

func WebSocketServer() {
http.Handle("/", echoHandler("Hey!"))
err := http.ListenAndServe(":8081", nil)
CheckError(err)
}

func echoHandler(msg string) websocket.Handler {
return func(ws *Conn) {
Echoserver(ws, msg)
}
}

关于websocket - http.Handle ("/", websocket.Handler(EchoServer) EchoServer 可以获取ws以外的其他参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23780473/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com