Socket.io Android HTTPS – 连接错误xhr轮询错误

我正在开发一个聊天应用程序与HTTPS。 这是我用过的Socket.IO

服务器

首先我用node.js和节点模块"socket.io": "^1.4.5"开发了服务器"socket.io": "^1.4.5"

在服务器上我有这个:

 var secure = { ca: fs.readFileSync('ca.pem'), key: fs.readFileSync('key.key'), cert: fs.readFileSync('cert.crt') }; var server = https.createServer(secure, app); var io = require('socket.io')(server); 

客户端

我用https://cdn.socket.io/socket.io-1.4.5.js开发了这个网站

我使用pod 'Socket.IO-Client-Swift', '~> 5.5.0'开发了iOS应用程序,

最后我正在开发Android应用程序

编译('io.socket:socket.io-client:0.7.0'){
  排除组:'org.json',模块:'json'
 }

在网站和iOS应用程序我没有问题的websocket,但是当我尝试连接Android应用程序中的套接字我收到以下错误:

io.socket.engineio.client.EngineIOException:xhr轮询错误

谢谢

这很可能是你安装的android版本使用ssl套接字协议的问题,你的服务器不会接受,反之亦然。

我相信这种情况,因为我有与Android 4.4.4相同的问题,但我的5.1.1平板电脑正常工作。

另一个例子,我们看到这个问题与我们的OkHttpClient对弹簧服务器,我们不得不扩展我们自己的DelegateSSLSocket实现:

  @Override public void setEnabledProtocols(String[] protocols) { super.setEnabledProtocols(new String[]{TlsVersion.TLS_1_1.javaName()}); } 

所以我认为这是一个非常类似的问题。 无论如何,解决方法是将您的Android操作系统更新到5.1.1。 如果你发现另一种方式没有更新的Android操作系统请让我知道!