У меня есть приложение на основе PhoneGap, которое использует WebSockets. Он хорошо работает под 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);
Что может быть не так?