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

时间:2016-03-22 16:18:26

标签: android node.js ssl https socket.io

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

服务器

首先,我使用node.js和节点模块"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应用程序
compile ('io.socket:socket.io-client:0.7.0') {
  exclude group: 'org.json', module: 'json'
}

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

  

io.socket.engineio.client.EngineIOException:xhr民意调查错误

由于

3 个答案:

答案 0 :(得分:1)

如果您尝试通过HTTPS连接并将Nginx用作后端的反向代理,请确保正确配置升级选项:

upstream nodes {
  # enable sticky session based on IP
  ip_hash;
  # Backend nodejs server
  server 127.0.0.1:5500;
}


server {
  listen 80;
  # The host name to respond to
  server_name mysite.com;


  location / {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $host;


    proxy_pass http://nodes;


    # enable WebSockets
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  }
} 

这为我解决了这个神秘错误提供了帮助。

来源: https://nhancv.com/android-socket-io-client-v1-0-0-engineioexception-xhr-poll-error/

答案 1 :(得分:0)

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

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

另一个实例我们已经使用OkHttpClient针对Spring服务器看到了这个问题,我们不得不扩展自己的DelegateSSLSocket实现:

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

所以我认为这是一个非常相似的问题。无论如何,解决方法是将您的Android操作系统更新到5.1.1。如果您在未更新Android操作系统的情况下找到其他方式,请告诉我们!

答案 2 :(得分:-1)

我希望这可以解决您的错误:

检查您从浏览器,iOS和android发送的身份验证标头。可能是由于身份验证问题。

Using Socket.IO on android Always Returns XHR Poll Error

https://developer.android.com/training/articles/security-ssl