socket.io débranchez puis rebranchez-le
Je suis en train de déconnecter un client, puis de le reconnecter à nouveau.
Je suis capable de déconnecter le client côté serveur à l'aide de socket.disconnect();
Mais je ne peux pas me connecter à nouveau, est-il un moyen de le faire ?
La chose est que j'ai un traitement spécifique dans le client connect callback
, et si j'essaie de me connecter le client après la déconnexion de l'événement, il n'est jamais déclenché le rappel, je ne comprends pas pourquoi.
Ici est un exemple clair:
CLIENT
var Socket = io.connect('http://127.0.0.1:3000');
function bind_socket(Socket) {
Socket.on('connect', function() {
console.log('Socket connected !');
});
Socket.on('event', function(data) {
console.log('Receive event: '+data);
});
Socket.on('disconnect', function() {
console.log('Socket disconnected !');
var Socket = io.connect('http://127.0.0.1:3000'); //Doesn't fire the "connect" callback
bind_socket(Socket);
Socket.emit('event', 3);
});
}
bind_socket(Socket);
Socket.emit('event', 1);
SERVEUR
var io = require('socket.io').listen(3000);
io.on('connection', function(socket) {
console.log('socket '+socket.id+' connect');
socket.on('event', function(data) {
console.log('Receive Event: '+data);
socket.disconnect();
this.emit('event', 2);
});
socket.on('disconnect', function() {
console.log('socket '+this.id+' disconnect');
});
});
- en fait j'ai utilisé une douille.io pour quelques mois ..dans le développement de son travail de grand, mais en production, vous ferez face à beaucoup de problèmes en matière de PROCESSEUR et de mémoire ..commutateur à sockjs est plus mieux
- Oui j'espère que la v1.0 viendra bientôt (ça fait plus de 6 mois, je ne cesse de dire cela...). Je utiliser socket.io pour son
rooms
service, ne semble pas exister sur sockjs, mais je suis d'accord, c'est probablement un meilleur choix concernant la façon dontsocket.io
semble à l'abandon... - La même ici ...je suis en attente de la version 1.0 mais si vous vérifiez les activites sur leur page github ..il y a plus de 500 questions ouvertes ..sockjs est plus mieux, mais moins de fonctionnalités
Vous devez vous connecter pour publier un commentaire.
La réponse est d'utiliser
Socket.socket.reconnect();
(où
Socket
est "l'original" socket retourné par l'événement de connexion).Si vous êtes en utilisant un Socket.io 1.0, essayez d'utiliser le
io
manager sur le socket de fairedisconnect()
etreconnect()
Voir l'exemple sur Socket.io - reconnexion Manuelle après côté client déconnecter
essayez d'utiliser
(trouvé cette accidentellement) - ce envoie des débranchez le code d'erreur:
"a échoué: fermeture de la Connexion avant de recevoir une poignée de main de réponse". et puis l'interface socket est d'essayer de se reconnecter.
Mais puis que vous exécutez dans un autre problème - socket de connexion/déconnexion connexion d'inondation.
Si vous utilisez la prise 2.x
socket.connect()
autres réponses parlereconnect()
n'est pas correct dans les 2.x