如何在 NodeJS 中使用 IPv6 https.request()

How to use IPv6 with NodeJS https.request()

我编写了一个程序来执行我的团队正在开发的嵌入式设备的 REST API。发出 https 请求的代码如下所示:

    var options = {
        hostname: hostAddress,
        port: hostPort,
        path: path,
        method: methodName,
        headers: {
            "Content-Type": "application/json",
            "Content-Length": post_data.length
        }
    };

    // Request and callback
    var request = https.request(
        options,
        function onResponse( response ) {
            // response code happens in here ...
        }
    );

hostAddress 是 IPv4 地址时,此代码工作正常,例如“192.168.1.13”。但是我们最近在嵌入式设备上添加了 IPv6 支持,这也需要进行测试。但是,当 hostAddress 是 IPv6 地址时,上面的相同代码 起作用。

https.request() [此处:https://nodejs.org/api/https.html] 的文档没有提及 IPv6。我已尝试对 hostAddress 使用以下每个值,但没有成功。

hostAddress = "fe80::9eb6:54ff:fe90:8b70%eth0";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70%eth0]";
hostAddress = "fe80::9eb6:54ff:fe90:8b70";
hostAddress = "[fe80::9eb6:54ff:fe90:8b70]";

我知道 IPv6 地址是正确的 -- 我从嵌入式系统主机上的 ifconfig 调用复制并粘贴了它。

谁能告诉我我在这里缺少什么?

节点版本 0.12 在 DNS 绑定上不支持 IPv6,并且由于 request 使用它,它也不会工作。

根据 this thread,计划在 v0.13 中实施。

更新

截至 2015 年,这似乎已在主要 nodejs/node 项目(Node.js 和 io.js 的重新合并)中实现。

http = require('http');
server = http.createServer();
server.listen(9000, '::');