2016-02-10 13 views
5

Buduję klienta aplikacji do testowania czatów za pomocą node.js, socket.io i cordova. Wykonywanie przeglądarki cordova run browser otwiera się pod http://localhost:8000. W index.js mojej aplikacji Cordova klient IRC dostałem kod, aby połączyć się z serwerem bocznej socket.io:Dodanie portu Cordova do zewnętrznych linków w przeglądarce przeglądarki cordova

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

problem jest, że otrzyma ten rodzaj błędu:

enter image description here

Tak więc, jak widać, do łącza dodany jest port (8000). Ten problem nie występuje, gdy uruchomię aplikację na urządzeniu z Androidem (cordova uruchom android).

Dlaczego cordova dodaje port do zewnętrznych linków?Czy można wyłączyć dodawanie portów do zewnętrznych linków w przeglądarce Cordova Run?

+0

Czy poprawnie skonfigurowałeś CSP (Content-Security-Policy) w swoim pliku index.html? – robert

+0

Właściwie usunąłem go całkowicie, ponieważ powodował on inne błędy (nie chciał się połączyć ze sprzętem), ale nie w tym przypadku;). Dlaczego istnieje port dodany do linku umieszczonego w JavaScript - z dodanym portem do końca adresu URL adres URL jest po prostu niepoprawny – born2fr4g

+0

Możesz łatwo dodać domyślny port https: 'var socket = io.connect ('https: // węzeł- socket.io-address: 433/'); '(lub inny port, jeśli jest inny) –

Odpowiedz

3

To nie Cordova dodanie portu do adresu URL, to socket.io klient, here:

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

Jeżeli port nie jest zdefiniowana, to domyślnie port aplikacji. To prawdopodobnie błąd w pliku socket.io, ponieważ ma to sens tylko wtedy, gdy strona internetowa i serwer są hostowane z tego samego węzła. Twój problem bierze się z faktu, że to cordova obsługuje twoją aplikację (na localhost: 8000), a socket.io zakłada, że ​​websocket będzie na tym samym porcie.

Aby tego uniknąć, należy dodać port do adresu URL lub obiektu jonów opt.

+0

To jest co myślałem na początku - dodać port do łącza, ale nie wiem, jaki port jest używany przez moją aplikację back.ocket.io na Heroku - próbowałem: 443 (ponieważ mój adres URL Heroku był na https), ale nie działało;). Czy istnieje jakieś rozwiązanie (być może rozwiązanie online), aby sprawdzić port mający tylko adres URL? – born2fr4g

+0

Do tego celu powinieneś użyć funkcji routingu HTTP Heroku. – Koder

+0

Hmm, nie wiem jak tego użyć - ale sprawdzę to. Masz jakieś wskazówki? W każdym razie dziękuję za odpowiedź - nagroda jest twoja;) – born2fr4g