Android:socket.io.socket.engineio.client.EngineIOException:XHR轮询错误
有时我会遇到这样的错误: io.socket.engineio.client.EngineIOException:xhr轮询错误 连接到插座的我的代码:Android:socket.io.socket.engineio.client.EngineIOException:XHR轮询错误,android,socket.io,Android,Socket.io,有时我会遇到这样的错误: io.socket.engineio.client.EngineIOException:xhr轮询错误 连接到插座的我的代码: try { HostnameVerifier myHostnameVerifier = new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { r
try {
HostnameVerifier myHostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
TrustManager[] trustAllCerts= new TrustManager[] { new X509TrustManager() {
public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
}
public X509Certificate[] getAcceptedIssuers() {
return new X509Certificate[0];
}
}};
SSLContext mySSLContext = null;
try {
mySSLContext = SSLContext.getInstance("TLS");
try {
mySSLContext.init(null, trustAllCerts, null);
} catch (KeyManagementException e) {
e.printStackTrace();
}
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
OkHttpClient okHttpClient = new OkHttpClient.Builder().hostnameVerifier(myHostnameVerifier).sslSocketFactory(mySSLContext.getSocketFactory()).build();
IO.setDefaultOkHttpWebSocketFactory(okHttpClient);
IO.setDefaultOkHttpCallFactory(okHttpClient);
IO.Options opts = new IO.Options();
opts.callFactory = okHttpClient;
opts.webSocketFactory = okHttpClient;
G.socket = IO.socket(G.SOCKET_ADDRESS, opts);
G.socket.connect();
} catch (URISyntaxException e) {
Log.i("errorCheck", "E: "+e);
e.printStackTrace();
}
但有时效果很好。在其他情况下,情况并非如此。我使用HTTPS,但在443端口上不起作用。
我从用户那里获得所有权限,有时
socket.io
工作正常
如何修复它以使其始终工作?最后,我将传输从
轮询更改为websocket
,并修复了我的问题(客户端和服务器端)
安卓:
IO.Options opts = new IO.Options();
opts.transports = new String[] { WebSocket.NAME };
socket = IO.socket(SOCKET_ADDRESS, opts);
socket.connect();
服务器:
io.set('transports', ['websocket']);