2015-08-13 6 views
16

mit [ich diese Frage markiert habe vom Moderator gelöscht werden, bis ich Antwort auf meine Frage this erhalten]Aufruf IPV6 IP WebSocket-Schnittstelle

Mein Javascript-Client funktioniert prima, wenn sie node.js sprechen (auf Ubuntu, mehr here) Server über WebSocket-Schnittstelle mit IPV4 IP-Adresse.

Obwohl mein Hosting-Provider bereit ist, mir IPV4 zuzuweisen, lassen Sie mich stattdessen IPV6 verwenden, da IPV4 jetzt begrenzt verfügbar ist.

Wenn der IPV6-IP mit erhalte ich diese Fehlermeldung:

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

Ich habe überprüft, dass Port 31333 ist in der Tat offen mit dem Werkzeug: http://www.subnetonline.com/pages/ipv6-network-tools/online-ipv6-port-scanner.php

ich sogar Lösung wie in IPv6 address giveing syntax error in internet explorer-10 websocket versucht habe, - das ist: 2600-3c00-0-0-f03c-91ff-fe73-2b08.ipv6-literal.net

Ich habe diesen Client ausgeführt und kann eine Verbindung mit dem Server herstellen, wenn beide auf Remote ausgeführt werden Ubuntu-basierter Server:

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); 
}); 

Jedoch, wenn ich diesen gleichen Client von meinem Zuhause Windows 7 ausgeführt werden, während der Server remote Ubuntu ein, ist es nicht in der Lage zu verbinden:

> $ 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) 

Ich habe auch diesen Code in Google Chrome laufen :

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

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

Aber ich den gleichen Fehler:

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

Was könnte das Problem sein?

PS: Im Moment habe ich den Server auf Port gestoppt 31333.

+0

Haben Sie überprüft, ob Ihre Firewall den Zugriff blockiert? Z.B. Wenn Sie die IP für localhost * und * für Ihre lokale IPv6-Adresse verwenden, funktioniert die Verbindung mit 'ws: // [:: 1]: 31333' erwartungsgemäß (Chrome 44.0.2403.125, Linux). –

+0

Momentan können Client-Server auf demselben Server kommunizieren. – user5858

+1

Unterstützt Ihre (lokale) Netzwerkverbindung IPv6? –

Antwort

1

IPv6 ist nicht auf Ihrem Realtek PCIe GBE Family Controller aktiviert. Wenn dies der Fall wäre, würde eine Zeile "Link-local IPv6 Address" im ipconfig-Ergebnis stehen.

Wechseln Sie zur Systemsteuerung> Netzwerk> Adaptereinstellungen ändern> Klicken Sie mit der rechten Maustaste auf den Adapter> Eigenschaften. Überprüfen Sie IPv6 an.

+0

Versucht, diese Antwort an Superuser zu posten, konnte aber nicht, weil die Frage dort als Duplikat markiert ist. –

+0

Genau, zeigen die 'ipconfig' Ergebnisse, dass IPv6 nicht auf dem System konfiguriert ist. –

0

IPv6 muss auf dem System aktiviert werden, und jeder Router zwischen ihm und dem ISP sowie der ISP müssen IPv6-fähig sein und dem Endbenutzer zur Verfügung stellen. Der Grund, nslookup funktioniert, ist, dass es nur AAAA-Datensätze zurückgibt, nicht tatsächlich über IPv6 verbinden. IPv4 kann nicht direkt mit IPv6 kommunizieren oder umgekehrt. Sie können keinen IPv6-Host mit einem IPv4-Host pingen.