2017-08-05 3 views
0

Ich bin dabei, eine Android-App im Play Store zu veröffentlichen, die eine Video-Chat-Funktion mit WebRTC und Socket.io erstellt hat. Die App funktioniert perfekt im Debug-Modus, aber wenn ich eine signierte Apk erstelle, hat meine App ein großes Problem.Socket.io scheitert an signierten Android-APK, aber nicht unsigniert APK

Das Problem ist, dass mit der signierten Apk, ich bin immer noch in der Lage, einen Video-Chat erfolgreich zu starten. Wenn ich jedoch zwinge, die App zu beenden und sie erneut zu öffnen, kann ich keinen Video-Chat mehr starten.

Es scheint zu passieren, weil meine App keine Verbindung mit dem Socket-Server herstellen kann, nachdem die App beendet wurde, gefolgt von einem erneuten Öffnen der App. Ich bin in der Lage, die Fehler dank dieser socket.io Rückruf

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

Der alarmierte Fehler ist

error: xhr poll error android

Antwort

0

Alles funktioniert gut auf dem signierten apk jetzt genau zu bestimmen. Ich habe es nach

Unter Häufige Probleme beim Verifizieren der Server-Zertifikate durch https://developer.android.com/training/articles/security-ssl.html Lesen arbeiten, eines der Probleme ist

The server configuration is missing an intermediate CA

Es stellt sich heraus, dass dies das Problem hinter dem ausgefallenen Socket.io war Anrufe. Ich ging auf https://www.sslshopper.com, und legte die URL und den Port für meinen Socket-Server. Es sagte mir, dass ich ein Problem mit meinem Setup habe. Ich schaute zurück auf den Code für meinen Socket-Server und erkannte, dass ich die falschen Optionen angegeben hatte. Ich habe vergessen, ca einzuschließen und cert zeigte auf die falsche Datei. Ich benutze Let's Encrypt, und https://community.letsencrypt.org/t/node-js-configuration/5175 hat mir wirklich geholfen, die richtigen Optionen herauszufinden.

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); 
Verwandte Themen