我有使用WebSockets的基于PhoneGap的应用程序。它在Android和Windows(通过Chrome)下均能很好地工作-适用于IPv4和IPv6。但是,在iPhone上,它仅适用于IPv4。
例如,如果我使用地址“ 104.217.75.167”(我的测试服务器),则它可以在Android,Windows和iPhone上运行。如果我使用“ :: ffff:104.217.75.167”或“ :: ffff:68d9:4ba7”(相同),则仅适用于Android和Windows,不适用于iPhone。
我认为问题出在Safari浏览器(WebKit)中,因为PhoneGap引擎将其用作应用程序的基础。但是我没有Mac来调试它。
我使用的代码是这样:
const ip_input = <HTMLInputElement>document.getElementById("ipaddress");
const ip: string = ip_input.value.replace(/\s/g, ''); // remove spaces
const isIpV6 = ip.includes(':');
const bracketedIp = isIpV6 ? '['+ip+']' : ip;
const fullAddr: string = "ws://" + bracketedIp + ":44405/websocket";
TheSocket = new WebSocket(fullAddr);
有什么问题吗?