【问题标题】:Socket.io Fails On Signed Android APK But Not Unsigned APKSocket.io 在签名的 Android APK 但不是未签名的 APK 上失败
【发布时间】:2017-08-05 20:33:01
【问题描述】:

我正准备向 Play 商店发布一款 Android 应用,该应用具有使用 WebRTC 和 Socket.io 构建的视频聊天功能。该应用程序在调试模式下运行良好,但是当我创建一个签名的 apk 时,我的应用程序出现了一个大问题。

问题是使用签名的apk,我仍然能够成功地开始视频聊天。但是,如果我强制退出应用程序并重新打开它,我将无法再次开始视频聊天。

这似乎是因为我的应用程序在强制退出应用程序然后重新打开应用程序后无法连接到套接字服务器。由于这个 socket.io 回调,我能够查明错误

socket.on('reconnect_error', (error) => {
  alert(error);
});

警告的错误是

错误:xhr 轮询错误 android

【问题讨论】:

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


    【解决方案1】:

    现在在签名的 apk 上一切正常。读完https://developer.android.com/training/articles/security-ssl.html

    验证服务器证书的常见问题下,问题之一是

    服务器配置缺少中间 CA

    事实证明,这是失败的 Socket.io 调用背后的问题。我继续https://www.sslshopper.com,并为我的套接字服务器输入 url 和端口。它告诉我我的设置有问题。我回顾了我的套接字服务器的代码,并意识到我指定了错误的选项。我忘了包括 cacert 指向错误的文件。我正在使用 Let's Encrypt 和 https://community.letsencrypt.org/t/node-js-configuration/5175 真的帮助我找出了正确的选择。

    const https = require('https');
    const fs = require('fs');
    
    var options = {
      key: fs.readFileSync('/path/to/privkey.pem'),
      cert: fs.readFileSync('/path/to/fullchain.pem'),
      ca: fs.readFileSync('/path/to/chain.pem')
    }
    
    https.createServer(options, (req, res) => {
      res.writeHead(200);
      res.end('hello world\n');
    }).listen(8000);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-07
      • 2018-07-12
      • 2014-11-28
      • 2018-09-20
      • 1970-01-01
      • 2015-05-07
      • 1970-01-01
      • 2019-06-21
      相关资源
      最近更新 更多