_readyStateMutex.lock();
_readyState = State::CONNECTING;
_readyStateMutex.unlock();
Uri uri = Uri::parse(_url);
LOGD("scheme: %s, host: %s, port: %d, path: %s\n", uri.getScheme().c_str(), uri.getHostName().c_str(), static_cast<int>(uri.getPort()), uri.getPathEtc().c_str());
int sslConnection = 0;
if (uri.isSecure())
sslConnection = LCCSCF_USE_SSL;
struct lws_vhost* vhost = nullptr;
if (_lwsProtocols != nullptr)
{
vhost = createVhost(_lwsProtocols, sslConnection);
}
else
{
vhost = createVhost(__defaultProtocols, sslConnection);
}
int port = static_cast<int>(uri.getPort());
if (port == 0)
port = uri.isSecure() ? 443 : 80;
const std::string& hostName = uri.getHostName();
std::string path = uri.getPathEtc();
const std::string& authority = uri.getAuthority();
if (path.empty())
path = "/";
struct lws_client_connect_info connectInfo;
memset(&connectInfo, 0, sizeof(connectInfo));
connectInfo.context = __wsContext;
connectInfo.address = hostName.c_str();
connectInfo.port = port;
connectInfo.ssl_connection = sslConnection;
connectInfo.path = path.c_str();
connectInfo.host = hostName.c_str();
connectInfo.origin = authority.c_str();
connectInfo.protocol = _clientSupportedProtocols.empty() ? nullptr : _clientSupportedProtocols.c_str();
connectInfo.ietf_version_or_minus_one = -1;
connectInfo.userdata = this;
connectInfo.client_exts = exts;
connectInfo.vhost = vhost;
_wsInstance = lws_client_connect_via_info(&connectInfo);
以上是websocket 的源码,我断点查看,我自己的域名,在没有设置AAAA记录时,是可以正常访问IPV4的地址的。
通过设置,创建IPv6隧道地址,设置AAAA记录后,同样的域名, _wsInstance = lws_client_connect_via_info(&connectInfo);
返回的就是NULL了,没设置前是正常的,是不是要修改libwebsockets.a?
IPV6的环境下,连接也是正常的,
cocos cretetor 1.5.2
ios真机环境下,有问题。
如果是安卓就没有问题。