4 votes

Une connexion de socket web ouverte bloque-t-elle la requête ajax ?

Juste une petite question pour une compréhension générale. Se pourrait-il qu'une connexion de socket web ouverte bloque les requêtes ajax ? Parce que les requêtes ajax avant l'initialisation des connexions web socket fonctionnent très bien et après que j'ai établi la connexion web socket, rien ne se passe.

$.ajax({
   url: someUrl
}).done(function(data) {
    // stuff done and calling initWebSocket()
}).error(function(data) {
  // error stuff done
});

function initWebSocket() { 

    hostname = 'somehost';

    ws = new WebSocket('ws://' + hostname + ':' + wsPort);

    ws.onopen = function() {

    console.log('Connected');

    ws.send(initMessage);
}

ws.onmessage = function(msg) {

// do stuff on message received

}

ws.onclose = function() {
console.log('Disconnected');
}

}

$('#someButton').click(function(event) {

event.preventDefault();

$.ajax({
url: someUrl
}).done(function(data) {
console.log(data);
}).error(function(data) {
console.log(data);
});

});

Comme indiqué, la première demande ajax fonctionne, mais pas la seconde lorsque je clique sur un bouton. Est-ce que quelqu'un a des informations sur ce sujet et si les web sockets bloquent vraiment les requêtes ajax, quelle serait la solution de contournement pour les faire fonctionner ? Merci.

0voto

sasbury Points 161

L'appel devrait être asynchrone, mais peut-être que la connexion échoue. Essayez d'ajouter un gestionnaire onerror pour la websocket et voyez ce qui se passe.

ws.onerror = function(){ console.log(evt.data); }

De plus, si vous pouviez faire un JSFiddle ou inclure le HTML, il se peut que le gestionnaire d'événement du bouton soit incorrect et que cela ne soit pas du tout lié au code du websocket.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X