我的代码结构如下:
*前端(JS),后端(Go + Wails)
在 JS 中获取用户输入 > 调用
DialServer
后端函数 > 将 net.Conn
中的 net.Dial
变量返回到 JS var > 将 var 传递到需要 net.Conn 变量的后端函数 SendMessage
。
我遇到了一些错误,我试图了解我正在做的事情是否可行。另外,如果您对如何以不同的方式构建我的代码有建议,请分享。谢谢!
我尝试传递 net.Conn 变量,但它似乎已转换为 json 类型。
您在后端运行单个服务器吗?如果是这样,你可以做类似的事情
// go
conns := make(map[string]*net.Conn)
func Connect() string {
conn := net.Dial(/* ... */)
id := uuid.New().String()
conns[id] = &conn
return id
}
func DialServer(w http.ResponseWriter, r *http.Request) {
id := Connect()
w.WriteJSON(map[string]string{"id": id})
}
type ConnID struct {
ID string `json:"id"`
}
func SendMessage(w http.ResponseWriter, r *http.Request) {
id := ConnID{}
err := json.NewDecoder(r.Body).Decode(&id)
conn := conns[id.ID]
// do something with the conn
}
现在,当您调用 DialServer 端点时,您将获得 net.Conn 的 id。然后,将 id 传递到您的
SendMessage
端点,并从 conn 映射中获取它。