使用WebSocket接口调用IPV6 IP

Calling IPV6 IP using WebSocket interface

[我已将此问题标记为由版主删除,直到我得到我的 this 问题的答案]

我的 javascript 客户端在通过具有 IPV4 IP 地址的 WebSocket 接口与 node.js(在 Ubuntu,更多 here)服务器通信时工作正常。

尽管我的托管服务提供商已准备好分配给我 IPV4,但让我改为使用 IPV6,因为现在 IPV4 供应有限。

使用 IPV6 IP 时出现此错误:

WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE

我已经使用工具http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php

检查端口 31333 确实打开了

我什至尝试过 IPv6 address giveing syntax error in internet explorer-10 websocket 中的解决方案——即:2600-3c00-0-0-f03c-91ff-fe73-2b08.ipv6-literal.net

我有 运行 这个客户端,当两者都 运行 正在基于远程 Ubuntu 的服务器上时能够连接到服务器:

var WebSocket = require('ws')
  , ws = new WebSocket('ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333');
ws.on('open', function() {
    ws.send('something');
});
ws.on('message', function(message) {
    console.log('received: %s', message);
});

然而,当我 运行 来自我家的同一个客户端 Windows 7 而服务器是远程 Ubuntu 一个时,它无法连接:

> $ node c2.js events.js:85
>       throw er; // Unhandled 'error' event
>             ^ Error: connect ENETUNREACH
>     at exports._errnoException (util.js:746:11)
>     at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1010:19)

我什至 运行 这段代码在 Google Chrome :

var ws = new WebSocket("ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333");

ws.onerror = function(err)
{ 
    console.log(err);
    alert("Connection is error..."); 
};

但我得到同样的错误:

WebSocket connection to 'ws://[2600:3c00::f03c:91ff:fe73:2b08]:31333/' failed: Error in connection establishment: net::ERR_ADDRESS_UNREACHABLE websocket.html:37 Event

可能是什么问题?

PS: 目前我已经在端口 31333 停止了服务器。

您的 Realtek PCIe GBE 系列控制器未启用 IPv6。如果是,在 ipconfig 结果中会有一行说 "Link-local IPv6 Address"。

转到控制面板 > 网络 > 更改适配器设置 > 右键单击​​适配器 > 属性。检查 IPv6。

需要在系统上启用 IPv6,它与 ISP 之间的每个路由器,以及 ISP 都必须准备好 IPv6 并将其提供给最终用户。 nslookup 起作用的原因是它只是返回 AAAA 记录,而不是实际通过 IPv6 连接。 IPv4 不能直接与 IPv6 通信,反之亦然。不能用 IPv4 主机 ping 通 IPv6 主机。