我有一个用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时,如何更好地理解该错误)?谢谢。
答案 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的文档。