WebAssembly错误“协议不可用”

时间:2019-03-26 23:01:48

标签: webassembly

我有一个用Go语言编写的数据库驱动程序(使用go-mssqldb),该数据库驱动程序可以单独运行,并且已经将其编译为WebAssembly。当我运行wasm文件时,它成功连接并立即查询诸如#imports import numpy as np import pandas as pd # Some sample data np.random.seed(1234) data1 = {'A1':sorted(np.random.normal(100, 20, 8)*-1), 'B1':sorted(np.random.normal(10, 2, 8)*-1)} data2 = {'A2':sorted(np.random.normal(100, 20, 8)*-1,reverse = True), 'B2':sorted(np.random.normal(10, 2, 8)*-1)} # Two dataframes df1 = pd.DataFrame(data1).round(2) df2 = pd.DataFrame(data2).round(2) # Duplicate scenario 1: Duplicate A1 values df1['B1'].iloc[4] = df1['B1'].iloc[5] 之类的基本信息,此客户端返回错误"SELECT @@version"。是否可以从WebAssembly发出网络请求?这样做时是否有特殊注意事项?此错误是否表示不可能以这种方式使用驱动程序?是什么提供了此错误(它是从...操作系统或浏览器中来的?),又在何处记录了这些错误(尤其是在这种特定情况下,以及使用WebAssembly时,如何更好地理解该错误)?谢谢。

1 个答案:

答案 0 :(得分:1)

不,你不能。

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

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