我打开了一个websocket服务器来向web组件发送数据,
func WebSocketServer() {
http.Handle("/", websocket.Handler(Echoserver))
err := http.ListenAndServe(":8081", nil)
CheckError(err)
}
Run Code Online (Sandbox Code Playgroud)
我想将一个附加参数(msg,类型为String)传递给handlerfunction(Echoserver).
func Echoserver(ws *websocket.Conn, msg String) {
fmt.Println("Client Connected")
_ := websocket.JSON.Send(ws, msg);
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以使用上面的语法执行此操作?你如何用附加参数调用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);
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是关闭.当参数是"数据类似"时,我喜欢这种方法.(类似字符串或其他简单数据.注意这种方法不需要创建本地类型.)
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)
}
}
Run Code Online (Sandbox Code Playgroud)