2016-04-14 47 views
0

Web soketi bağlantısını sınamaya çalışıyorum. Verileri test edebilirsiniz eğer var orada kukla kod bu tür götürdü onu tanımlayan birkaç iyi dersler sadece WebSockets üzerinden gönderilen görmek için: Ben gibi pek nerede sunucuyu kurduktanhttps sunucusu için Mocha web soketi testi

var socketURL= 'https://localhost:9002'; 
var io = require('socket.io-client'); 
options={ 
transports: ['websocket'], 
'force new connection': true 
}; 
describe("Connection test", function(){ 
it('to check if data is received',function(done){ 
    var client = io.connect(socketURL,options); 

    client.on('connect',function(){ 
     console.log("in connect"); 
     client.emit('data',{data:10}); 

     client.on('result',function(data){ 
      console.log(data); 
      data.should.equal(10); 
      done(); 
     }); 

    }); 
}); 

SEÇENEKLER Ben konsola çıktısını hiçbir şey da bunu görebilirsiniz,

var app = express(); 
var httpsServer = https.createServer(OPTIONS, app); 

httpsServer.listen(9002); 
var io = require('socket.io').listen(httpsServer); 
io.on('connection', function(socket){ 
    socket.on('data', function(data){ 
     socket.emit('result',data); 
    }) 
}) 

sorun client.on ('connect') olarak adlandırılan asla olmasıdır okumak için anahtar ve sertifika belirler. Tüm bunlar bir zaman aşımı hatasıdır: "2000 msn zaman aşımı aşıldı. Bu testte done() geri çağrısının çağrıldığından emin olun." done() öğesini taşıdım ve fark yaratmıyor. Sorun şu ki, bir https sunucusu kullanıyorum iken takip ettiğim eğiticiler bir http sunucusu kullanıyorum ve bu bağlantı eklemek için ek yöntemleri gerekebilir, ancak mocha için oldukça yeni, bu yüzden ben değilim ne olabileceğini biliyorlar. Herhangi bir yardım için teşekkür ederizum takdir edilecektir

cevap

0

Kendinden imzalı sertifikalar kullanıyor musunuz? Eğer öyleyse, bu gibi kod çalıştıran:

env DEBUG=* mocha test/example.js 

aşağıdaki hatayı veriyor:

Mon, 04 Jul 2016 11:22:20 GMT engine.io-client:socket socket error {"type":"TransportError","description":{"code":"UNABLE_TO_VERIFY_LEAF_SIGNATURE","type":"error","target":{"domain":null,"_events":{},"_eventsCount":4,"_socket":null,"_ultron":null,"_closeReceived":false,"bytesReceived":0,"readyState":0,"supports":{"binary":true},"extensions":{},"_isServer":false,"url":"wss://localhost:9002/socket.io/?EIO=3&transport=websocket","protocolVersion":13,"binaryType":"buffer"}}} 

Not Yani UNABLE_TO_VERIFY_LEAF_SIGNATURE

, örneğin istemci seçeneklerine sertifika yetkilisi eklemek

data.data.should.equal(10); 

options={ 
ca: fs.readFileSync(path.join(__dirname, '..', 'certs', 'client', 'my-root-ca.crt.pem')), 
transports: ['websocket'], 
'force new connection': true 
}; 

düzeltme ve test geçer:

varsayılan zaman aşımı süresinden tarafından, mocha testi durumda yapılması geçiren varsa
Connection test 
in connect 
{ data: 10 } 
    √ to check if data is received (68ms) 


    1 passing (75ms) 
0

2000 ms (2 saniye). Web soket bağlantınıza bağlanmak için daha fazla zamana ihtiyaç duyar.

verilen hata zaman aşımı hatası: "2000ms zaman aşımı aştı olun yapılır() geri arama Bu testte çağrılan

Sorun aşağıdaki kodla sabit olmalıdır.:.

it('to check if data is received',function(done){ 

    this.timeout(60000); // 60 seconds 
    var client = io.connect(socketURL,options); 

    client.on('connect',function(){ 
     console.log("in connect"); 
     client.emit('data',{data:10}); 

     client.on('result',function(data){ 
      console.log(data); 
      data.should.equal(10); 
      done(); 
     }); 

    }); 
}); 

this.timeout (60000), mocha'ya test vakasını tamamlamak için 60 saniye beklemesini bildirir.