隨手記錄一下
- S端代碼層:
- socket.io的server端實現提供了監聽IP的參數,只需要在監聽的函數裏,提供監聽[::] (IPv6的0.0.0.0)這個參數即可同時監聽Ipv6和ipv4,ipv4會以兼容形式變成IPv6(大概是 ::ffff:192.168.1.1 這樣)
-
let app = require('express')();
let server = require('http').Server(app);
let io = require('socket.io')(server);
server.listen(port,"::")//這裏提供監聽的IP
- socket.io的server端實現提供了監聽IP的參數,只需要在監聽的函數裏,提供監聽[::] (IPv6的0.0.0.0)這個參數即可同時監聽Ipv6和ipv4,ipv4會以兼容形式變成IPv6(大概是 ::ffff:192.168.1.1 這樣)
S端操作系統層:
- 據某阿里一生黑survey得到的結果,阿里雲服務不支持IPv6(主要是大陸境內ISP的IPv6幾乎不支持),因此阿里雲的公用鏡像默認會關掉IPv6相關配置.
- 主要操作是兩個點,一個是啓用服務器的IPV6,另一個是去申請一個IPV6的tunnel,然後配置到機器上
- 具體操作參考這篇blog:(Ubuntu)http://www.cnblogs.com/ios4app/p/6877355.html
- CentOS會在一開始啓用IPv6上有細微差別,大概應該是這樣:(未測試)https://elkpi.com/topics/aliyun-enable-ipv6.html
- 配置上有一個坑,就是在配置ipv6 的tunnel信息的時候,local不見得一定就是按照上面的blog所寫的要填寫內網IP,可能要根據你的實際網絡配置狀況,個人經驗是填寫eth0上的IPv4 的IP
- 配置完畢後,可以用ping6 ipv6.google.com 或者百度 ,看看是否能通
- 相應地,如果需要curl調試,輸入裸IPV6的IP時需要加入大括號以及-g參數(例如 curl -g http://[::1]:80),如果是訪問ipv6域名,需要加上-6參數來解析域名(例如 curl -6 http://ipv6.google.com)
- 順帶一提,即使是阿妹你看的阿里雲服務器,好像也沒有自動獲取到ipv6地址,估計還需要進一步配置
網絡層:
- 時刻記得國內的ISP並不支持ipv6這一點,所以很多情況下我們都沒有ipv6的測試環境,需要自己局域網構造一個
C端代碼層:
- 額…..socket.io的unity實現client直接支持IPV6了