2015-06-17 17 views
5

Próbuję przetestować bezpieczny websocket, ale mam problem. Oto moja próba:Połączenie SSL Websocket

var WebSocket = require('ws'); 

describe('testing Web Socket', function() { 
    it('should do stuff', function(done) { 
    var ws = new WebSocket('wss://localhost:15449/', { 
     protocolVersion: 8, 
     origin: 'https://localhost:15449' 
    }); 
    ws.on('open', function() { 
     console.log('open!!!'); 
     done(); 
    }); 
    console.log(ws); 
    }); 
}); 

Oto dziennik „WS”, po jej utworzeniu:

{ domain: null, 
    _events: { open: [Function] }, 
    _maxListeners: undefined, 
    _socket: null, 
    _ultron: null, 
    _closeReceived: false, 
    bytesReceived: 0, 
    readyState: 0, 
    supports: { binary: true }, 
    extensions: {}, 
    _isServer: false, 
    url: 'wss://localhost:15449/', 
    protocolVersion: 8 } 

Nie rozumiem dziennik z powrotem otwarte. Projektu używam lokalnie, a gdy używam narzędzia Chrome Advanced Rest Client, mogę połączyć się dobrze.

Czy brakuje mi czegoś? Proszę pomóż.

Edit: dodałem ws.on('error') i wylogowanie { [Error: self signed certificate] code: 'DEPTH_ZERO_SELF_SIGNED_CERT' } Próbowałem zostały również po tym code ale uzyskać ten sam błąd.

+0

Czy sprawdzić dziennik klienta? Możliwe, że klient odmawia połączenia z serwerem SSL z powodu nieważności certyfikatu. Przejrzyj dziennik klienta i zaktualizuj pytanie. – Myst

+0

'ws' powinien mieć zdarzenie błędu. Może zaloguj się którekolwiek z tych, które występują? –

+0

Również ... Myślę, że zdefiniowałeś procedurę obsługi zdarzenia onopen _ po tym, gdy websocket był już otwarty ... – Myst

Odpowiedz

5

Moduł https odrzuca certyfikat z podpisem własnym (jak można by się spodziewać). Można zmusić go, aby zatrzymać sprawdzanie przez przepuszczanie rejectUnauthorized: false opcji (który WebSocket przejdzie do https):

var ws = new WebSocket('wss://localhost:15449/', { 
    protocolVersion: 8, 
    origin: 'https://localhost:15449', 
    rejectUnauthorized: false 
}); 
+5

Próbowałem używać tego rozwiązania dla podobnego problemu, który dostaję z moją aplikacją Cordova na Androida. Ale to daje mi błąd jako "" Uncaught SyntaxError: Nie udało się skonstruować 'WebSocket': Podprotocol '[object Object]' jest nieprawidłowy. " – Zeba

+0

Błąd taki sam jak Zeba – Yousaf

+1

@Zeba Myślę, że to rozwiązanie działa tylko dla Node.js –

Powiązane problemy