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操作系统请让我知道!