使用WebSocket接口调用IPV6 IP

时间:2015-08-13 09:53:10

标签: javascript node.js google-chrome-extension websocket ipv6

[我已将此问题标记为由主持人删除,直到我回答this个问题]

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

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

使用IPV6 IP时出现此错误:

  

WebSocket连接到'ws:// [2600:3c00 :: f03c:91ff:fe73:2b08]:31333 /'   失败:连接建立错误:   净:: 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连接到'ws:// [2600:3c00 :: f03c:91ff:fe73:2b08]:31333 /'   失败:连接建立错误:   net :: ERR_ADDRESS_UNREACHABLE websocket.html:37活动

可能是什么问题?

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

2 个答案:

答案 0 :(得分:2)

Realtek PCIe GBE系列控制器上未启用IPv6。如果是的话,会有一行说“#34;链接本地IPv6地址"在ipconfig结果中。

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

答案 1 :(得分:0)

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