拨号 tcp:协议不可用 go web assembly 测试

bla*_*e_1 3 testing go webassembly

尝试去测试触发 POST 请求的 Web 组装功能。

收到以下错误:

firePing_test.go:40: ERROR ON POST REQUEST: Post https://not-the-real-api.execute-api.us-east-1.amazonaws.com/testing: dial tcp: Protocol not available
Run Code Online (Sandbox Code Playgroud)

运行:Ubuntu 18.04.2 LTS go版本go1.12.2 linux/amd64

我已经测试过该函数是有效的,并且在chrome中执行时会发送请求。为 linux/amd64 编译时测试也通过。

问题函数:

firePing_test.go:40: ERROR ON POST REQUEST: Post https://not-the-real-api.execute-api.us-east-1.amazonaws.com/testing: dial tcp: Protocol not available
Run Code Online (Sandbox Code Playgroud)

问题测试函数调用:

// FirePing fires a ping
func FirePing(protocol *string, domain *string, params *map[string]string) (*http.Response, error) {

    // Marshal map into POST request body
    reqBody, err := json.Marshal(*params)
    if err != nil {
        return  nil, fmt.Errorf("ERROR ON MARSHAL OF PARAMS: %v", err)
    }

    // Send POST request
    req, err := http.NewRequest("POST", *protocol + "://" + *domain, bytes.NewBuffer(reqBody))
    if err != nil {
        return  nil, fmt.Errorf("ERROR ON FORMING REQUEST: %v", err)
    }
    client := &http.Client{}
    resp, err := client.Do(req)
    if err != nil {
        return nil,fmt.Errorf("ERROR ON POST REQUEST: %v",err)
    }

    return resp, nil
}
Run Code Online (Sandbox Code Playgroud)

应该通过此测试用例,因为它在浏览器中正常执行函数调用。

我唯一见过的其他地方是:

http.Get 返回协议不可用错误

这是来自 Playground 禁用 TCP 连接的接缝。我正在本地运行此测试

jon*_*eri 5

MVP 版本专门针对在浏览器中运行 WASM。因此,浏览器 API 不允许任意 TCP/IP 连接,因此 WASM 同样受到限制。也就是说,WASM 一直有超越浏览器的野心。名为WASI的最新计划将添加在浏览器外部使用所需的功能,例如文件 I/O 和网络原语。