gpt4 book ai didi

mongodb - 如何从 wasm 模块连接到本地 mongodb 实例?

转载 作者:数据小太阳 更新时间:2023-10-29 03:08:38 25 4
gpt4 key购买 nike

我正在尝试使用编译为 WebAssembly 的 Go 将一些数据存储在我的本地 MongoDB 实例中。问题是,我什至无法连接到它。 mondog 实例不会以任何方式对来自 wasm 模块的连接使用react。只有从 wasm 模块连接时才会出现此问题。以普通方式编译时相同的代码工作正常,以及来自 mongo shell 的连接。运行的mongod实例没有密码保护。

如果重要的话,我的操作系统是 Windows 10。

我尝试将 mongod bind_ip 参数从 localhost 更改为我机器的实际本地地址,并使用不同的浏览器(Chrome 75.0.3770.80,Opera 60.0.3255.109)。更改超时持续时间也无济于事。

func connectToMongo(URI string, timeout time.Duration) *mongo.Client {

ctx, cancel := context.WithTimeout(context.Background(), timeout)
defer cancel()

client, err := mongo.Connect(ctx, options.Client().ApplyURI(URI))

if err != nil {
log.Fatal(err)
}

err = client.Ping(ctx, readpref.Primary())

if err != nil {
log.Fatal(err) // It fails here
}

return client
}

func main() {
client := connectToMongo("mongodb://localhost:27017", 20*time.Second)
}

<html>
<head>
<script type="text/javascript" src="./wasm_exec.js"></script>
<script>
const go = new Go();
WebAssembly.instantiateStreaming(fetch('main.wasm'),go.importObject).then( res=> {
go.run(res.instance)
})
</script>
</head>
</html>

我在没有任何参数的情况下运行 mongod.exe,因此它绑定(bind)到本地主机。

我希望我的代码连接到 mongod 实例,但实际上我在浏览器控制台中收到以下错误:“超出上下文截止日期”。

我仍在学习 Go 并且是 JavaScript 的新手,所以我可能会遗漏一些非常简单的东西。任何帮助将不胜感激。

最佳答案

您正在尝试从 WebAssembly 连接到本地服务器,很可能使用浏览器 WASM 沙箱不允许的协议(protocol)。

例如,WebAssembly 无法打开 WASM 沙箱之外的低级网络套接字,您在运行时主要受限于在文件、系统和网络访问方面可以使用 JavaScript 执行的相同操作浏览器中的 WASM。

值得一读 WebAssembly 对安全性和系统访问的限制 当在浏览器环境中使用时 并且值得注意的是,不是 WebAssembly 在此处阻止您的连接,而是浏览器运行 WebAssembly。

关于mongodb - 如何从 wasm 模块连接到本地 mongodb 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56500709/

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