【问题标题】:WebAssembly error "Protocol not available"WebAssembly 错误“协议不可用”
【发布时间】:2019-03-26 23:01:47
【问题描述】:

我有一个用 Go 编写的数据库驱动程序(使用 go-mssqldb),它单独运行良好,我已经将它编译到 WebAssembly。当我运行 wasm 文件时,它成功连接并立即查询类似"SELECT @@version" 的基本内容,此客户端返回错误Protocol not available。是否可以从 WebAssembly 发出网络请求?这样做时是否有特殊考虑?此错误是否意味着无法以这种方式使用驱动程序?什么提供了这个错误(它来自哪里......操作系统或浏览器?)以及这些记录在哪里(特别是在这种特定情况下,我如何更好地理解错误,并且在使用 WebAssembly 时更普遍)?谢谢。

【问题讨论】:

    标签: webassembly


    【解决方案1】:

    不,你不能。

    为了更好地理解 WASM,您应该接受一件事:Web 浏览器中的 WebAssembly 是 JavaScript。当然,您正在运行 Go 程序,但是,WASM 运行在 Web 浏览器的 JS 引擎中。这意味着,在 WASM 中,你不能做 JS 做不到的事情。您的 Go 库仅使用 JS API 在内部实现。您永远无法直接接触低级 OS API。

    这意味着你不能直接连接 SQL 服务器,因为 JS 不能使用 WebSockets 以外的低级套接字网络。在服务器端,您的 SQL 服务器必须接受 WebSocket 才能使其工作。实现它的一种方法是使用Websockify。在客户端,我在 Go 编程方面的经验为零,但您应该能够获得有关 WemAssembly 中套接字通信和 WebSockets 的文档。

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 2022-08-10
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多