登录
首页 >  Golang >  Go问答

在编译目标为wasm时,无法成功连接net.Dial

来源:stackoverflow

时间:2024-02-22 08:15:25 463浏览 收藏

小伙伴们对Golang编程感兴趣吗?是否正在学习相关知识点?如果是,那么本文《在编译目标为wasm时,无法成功连接net.Dial》,就很适合你,本篇文章讲解的知识点主要包括。在之后的文章中也会多多分享相关知识点,希望对大家的知识积累有所帮助!

问题内容

我正在 golang 中设置一个 tcp 客户端,连接到 nodejs 中的服务器。 golang 客户端正在编译为 webassembly (wasm),并通过 npm 的 http-server 命令提供服务。

该程序在编译 go 运行 main.go 时运行良好,但不适用于 wasm。如果我从场景中取出 net.dial(...) 函数,它就可以工作。

main.go连接的用nodejs编写的服务器

48635957188​​8

在几种情况下效果很好。 最小的 golang 代码:

//main.go
func main() {
    c := make(chan struct{}, 0)
    // ERROR HAPPENS HERE
    _, err := net.Dial("tcp", "127.0.0.1:8081")
    // -------------------------
    if err != nil {
        fmt.Println(err)
    }
    <-c
}

这是作为 wasm 运行时在浏览器控制台上输出的内容: dial tcp 127.0.0.1:8081:连接被拒绝

如果正常 go 运行 main.go 这是 server.js 上的输出: connected: 127.0.0.1:50577 表示连接成功。


解决方案


出现这种行为的原因是出于安全原因,wasm 编译的二进制文件是在沙箱环境中执行的,因此不支持 tcp\udp 套接字。但是,您尝试使用 websockets 来模拟所需的行为。

文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《在编译目标为wasm时,无法成功连接net.Dial》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>