2016-02-10 4 views
5

Ich baue eine Test-Chat-App-Client mit node.js, socket.io und Cordova. Ausführen von cordova run browser Browser öffnet sich zu http://localhost:8000. In index.js meines cordova Chat-Client App bekam ich Code zu meiner Server-Seite socket.io zu verbinden:Cordova Hinzufügen von Port zu externen Links auf Cordova ausführen Browser

var socket = io.connect('https://node-socket.io-address/'); 
socket.on('connect', function() {............. 

Problem ist, dass ich diese Art von Fehlermeldung an:

enter image description here

Wie Sie sehen können, wurde dem Link ein Port (8000) hinzugefügt. Dieses Problem tritt nicht auf, wenn ich App auf Android-Gerät (Cordova Run Android) ausführen.

Warum Cordova Port zu externen Links hinzufügen?Kann deaktivieren Port hinzufügen zu externen Links auf Cordova ausführen Browser?

+0

Haben Sie CSP (Content-Security-Policy) korrekt in Ihrer index.html konfiguriert? – robert

+0

Eigentlich entferne ich es komplett, weil es einen weiteren Fehler verursacht (weigere mich, eine Verbindung herzustellen), aber es ist nicht der Fall;). Warum gibt es einen Port hinzugefügt, um Link in Javascript platziert - mit hinzugefügten Port an das Ende der URL Adresse ist einfach nicht korrekt – born2fr4g

+0

Sie können einfach Standard-https-Port hinzufügen: 'var socket = io.connect ('https: // node- socket.io-address: 433/'); '(oder ein anderer Port falls anders) –

Antwort

3

Es ist nicht cordova Port zu Ihrer URL hinzufügen, es ist socket.io Client, here:

this.port = opts.port || (global.location && location.port ? 
     location.port : 
     (this.secure ? 443 : 80)); 

Wenn Port nicht definiert, wird standardmäßig Port der Anwendung. Das ist wahrscheinlich ein Fehler in socket.io, da er nur Sinn macht, wenn Webseite und Server von demselben Knoten gehostet werden. Ihr Problem rührt von der Tatsache her, dass es cordova ist, das Ihrer Anwendung dient (auf localhost: 8000) und socket.io davon ausgeht, dass websocket auf demselben Port sein wird.

Um dies zu vermeiden, sollten Sie einen Port zu URL oder das opt ions-Objekt hinzufügen.

+0

Das ist Was ich zuerst dachte - Port hinzufügen zu verknüpfen, aber ich weiß nicht, welcher Port von meiner socket.io Backend-Anwendung auf Heroku gehostet wird - Ich versuchte: 443 (da meine Heroku-URL auf https war), aber es hat nicht funktioniert;). Gibt es eine Lösung (vielleicht Online-Lösung), um den Port zu überprüfen, der nur URL hat? – born2fr4g

+0

Sie sollten dazu die HTTP-Routing-Funktion von Heroku verwenden. – Koder

+0

Hmm ich weiß nicht wie ich es benutzen soll - aber ich werde es überprüfen. Hast du irgendwelche Tipps dafür? Wie auch immer, danke für deine Antwort - Kopfgeld gehört dir;) – born2fr4g