【问题标题】:dial tcp: Protocol not available go webassembly testdial tcp: Protocol not available go webassembly test
【发布时间】:2019-09-16 18:05:00
【问题描述】:

正在尝试测试一个触发 POST 请求的网络组装函数。

收到以下错误:

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

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

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

问题功能:

// 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
}

问题测试函数调用:

// FirePing and receive response
    resp, err := FirePing(&config.Config.Protocol, &config.Config.Domain, &m)
    if err != nil {
        t.Error(err)
        return
    }

应该通过这个测试用例,因为它在浏览器中很好地执行了函数调用。

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

http.Get returns Protocol not available error

哪些接缝来自 Playground 禁用 tcp 连接。我在本地运行这个测试

【问题讨论】:

    标签: go testing webassembly


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-16
      • 2016-02-26
      • 1970-01-01
      • 1970-01-01
      • 2022-12-01
      • 1970-01-01
      • 2022-12-02
      相关资源
      最近更新 更多