WebAssembly 错误 "Protocol not available"
WebAssembly error "Protocol not available"
我有一个用 Go 编写的数据库驱动程序(使用 go-mssqldb),它单独运行良好,我已将其编译为 WebAssembly。当我 运行 wasm 文件时,它连接成功并立即查询一些基本的东西,比如 "SELECT @@version"
这个客户端 returns 错误 Protocol not available
。是否可以从 WebAssembly 发出网络请求?这样做有什么特别的考虑吗?这个错误是否意味着不可能以这种方式使用驱动程序?是什么导致了这个错误(它从哪里来的…… OS 或浏览器?)以及这些错误记录在哪里(特别是我如何才能更好地理解这种特定情况下的错误以及更普遍的使用 WebAssembly 时的错误)?谢谢
不,你不能。
为了更好地理解 WASM,您应该接受一件事:Web 浏览器中的 WebAssembly 是 JavaScript。当然,你是 运行 Go 程序,但是,WASM 运行在网络浏览器的 JS 引擎中。这意味着,在 WASM 中,你不能做 JS 做不到的事情。您的 Go 库仅使用 JS API 在内部实现。您永远无法直接接触低级 OS API。
这意味着您不能直接连接SQL服务器,因为JS不能使用WebSockets以外的低级套接字网络。在服务器端,您的 SQL 服务器必须接受 WebSocket 才能使其正常工作。实现它的一种方法是使用 Websockify。在客户端,我对 Go 编程的经验为零,但您应该能够在 WemAssembly 中获得有关套接字通信和 WebSockets 的文档。
我有一个用 Go 编写的数据库驱动程序(使用 go-mssqldb),它单独运行良好,我已将其编译为 WebAssembly。当我 运行 wasm 文件时,它连接成功并立即查询一些基本的东西,比如 "SELECT @@version"
这个客户端 returns 错误 Protocol not available
。是否可以从 WebAssembly 发出网络请求?这样做有什么特别的考虑吗?这个错误是否意味着不可能以这种方式使用驱动程序?是什么导致了这个错误(它从哪里来的…… OS 或浏览器?)以及这些错误记录在哪里(特别是我如何才能更好地理解这种特定情况下的错误以及更普遍的使用 WebAssembly 时的错误)?谢谢
不,你不能。
为了更好地理解 WASM,您应该接受一件事:Web 浏览器中的 WebAssembly 是 JavaScript。当然,你是 运行 Go 程序,但是,WASM 运行在网络浏览器的 JS 引擎中。这意味着,在 WASM 中,你不能做 JS 做不到的事情。您的 Go 库仅使用 JS API 在内部实现。您永远无法直接接触低级 OS API。
这意味着您不能直接连接SQL服务器,因为JS不能使用WebSockets以外的低级套接字网络。在服务器端,您的 SQL 服务器必须接受 WebSocket 才能使其正常工作。实现它的一种方法是使用 Websockify。在客户端,我对 Go 编程的经验为零,但您应该能够在 WemAssembly 中获得有关套接字通信和 WebSockets 的文档。