Node.js socket.io-client connect_failed / connect_error event
Je joue avec node.js et de la prise.io-client. Je suis en train d'essayer de se connecter à un canal qui n'existe pas dans le but de déclencher l'événement 'connect_failed' (comme spécifié dans les https://github.com/LearnBoost/socket.io-client ).
Cependant je ne peux pas obtenir la manifestation de travail:
var clientio = require('socket.io-client');
console.log('Trying stuff ...');
//the channel does not exist
var socket = clientio.connect( 'http://localhost:4000/news' );
//I expect this event to be triggered
socket.on('connect_error', function(){
console.log('Connection Failed');
});
socket.on('connect', function(){
console.log('Connected');
});
socket.on('disconnect', function () {
console.log('Disconnected');
});
socket.send('hi there');
Si je exécutez va ce qui va se passer:
$ node tmp_clientio.js
Trying stuff ...
Des idées sur la façon de déclencher une erreur si la connexion à un canal qui n'existe pas?
Mise à JOUR: Renommé connect_failed
à connect_error
source d'informationauteur Tk421
Vous devez vous connecter pour publier un commentaire.
Je suis tombé sur le même problème. Il y a les nations unies et documentée de la différence entre l'espace de noms /désactiver le mode que j'ai aussi couru dans, à la fin, j'ai dû utiliser le chrome débogueur de s'en sortir.
Donc, vous le voyez ci-dessus, vous devez obtenir la réelle prise
ns_news.socket
à partir de votre espace de noms si vous voulez lier "au niveau de la socket" des événements tels que l'échec de la connexion, la déconnexion, etcRemarque que vous utilisez maintenant ns_news pour envoyer ou recevoir des événements
Enfin, assurez-vous de lier la
socket.on('error', ...)
événement - il se produit si le port n'est pas disponiblePlein implémentation de 8080 connecter avec un repli vers le port 80
Je l'ai fait dans mon application (essayez le port 8080, si cela échoue, essayez le port 80 par le biais de nginx)
J'ai aussi ajouté un nginx proxy_pass règle, qui ressemble à ceci
La Mise à niveau et les options de Connexion ici (à partir de versions plus récentes de nginx) sont nécessaires à l'amélioration de la connexion entre nginx et de la prise.io pour soutenir les websockets. Cela signifie que votre serveur peut supporter les websockets sur le port 80.
En outre, si votre serveur prend en charge le protocole ssl /https, ce sera proxy wss qui est la version sécurisée des websockets.
ils ont changé le nom de l'événement. utilisation
ou
au lieu
https://github.com/socketio/socket.io-client/blob/master/lib/socket.js#L27
De la la documentation:
Si cet événement se déclenche seulement si le connectTimeout option est définie (la mise en œuvre de ce qui est ici: https://github.com/LearnBoost/socket.io-client/blob/master/lib/socket.js#L223-245 ).
Donc ce que vous devriez faire de différent dans votre code est:
Cela s'applique à la version 1.4.5 (peut fonctionner sur les versions précédentes d'ailleurs).
Ce que vous voulez faire est d'écouter l'évènement "erreur" sur le socket.io client. Il sera le déclencheur de cet événement, et le message d'erreur sera non Valide "espace de noms".
Voici un exemple de la façon de le gérer à partir de la douille.io client: