是否可以将go接口(net.Conn)从go传递到javascript并返回go?

问题描述 投票:0回答:1

我的代码结构如下:

*前端(JS),后端(Go + Wails)

在 JS 中获取用户输入 > 调用

DialServer
后端函数 > 将
net.Conn
中的
net.Dial
变量返回到 JS var > 将 var 传递到需要 net.Conn 变量的后端函数
SendMessage

我遇到了一些错误,我试图了解我正在做的事情是否可行。另外,如果您对如何以不同的方式构建我的代码有建议,请分享。谢谢!

我尝试传递 net.Conn 变量,但它似乎已转换为 json 类型。

javascript go networking p2p wails
1个回答
0
投票

您在后端运行单个服务器吗?如果是这样,你可以做类似的事情

// 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 映射中获取它。

© www.soinside.com 2019 - 2024. All rights reserved.