2017-01-13 7 views
0

私は基本的にセッション処理のためにcookiesを使用するアプリケーションを持っています。Socket.io Disconnect

目的は、ユーザーconnectsdisconnectsは、

io.on('connection', function(socket){ 
    // Logging when a new connection is, made! 
    socket.emit('cookie_user_log'); 
    socket.on('cookie_value_log', function(x){ 
    console.log(x+ " Joined the conversation! :)"); 
    io.emit('welcome', x); // will display welcome HTML client-side message 
    }); 

これは完璧に動作し、私は、メッセージを表示することができていたときにメッセージを表示するときに、ユーザーconnects

しかし、同様のアプローチでは切断を処理することはできません。

socket.on('disconnect', function(){ 
    leave(); 
    }); 

function leave() 
{ 
    console.log("LEAVE IT"); 
    socket.emit('cookie_user_leave'); 
    socket.on('cookie_value_leave', function(x){ 
    console.log(x+ " Left the conversation! :)"); 
    io.emit('bye', x); // will display bye HTML client-side message 
    }); 
} 

ここでの出力は次のとおりです。

LEAVE IT 

とメッセージが表示されません! ご協力いただければ幸いです!

+1

なぜあなたは既にされているソケットにメッセージを発することができるだろう切断された? – idbehold

+0

さて、私はグループチャットのシナリオを思いついたと思います。あるユーザーが切断すると、「[user1] disconnected」などのメッセージがチャット全体にブロードキャストされます。私は間違って何をしていますか? – Arjun

答えて

2

あなたがしたいすべてが別のものは、あなたがこのような何かを行うことができます切断したときに、他の接続されたクライアントへの出力の場合:

io.on('connection', function(socket){ 
    // Logging when a new connection is, made! 
    var user 
    socket.emit('cookie_user_log'); 
    socket.on('cookie_value_log', function(x){ 
    user = x 
    console.log(x+ " Joined the conversation! :)"); 
    io.emit('welcome', x); // will display welcome HTML client-side message 
    }); 

    socket.on('disconnect', function(){ 
    if (!user) return; 
    console.log(user+ " Left the conversation! :)"); 
    io.emit('bye', user); 
    }); 
}) 
+0

どうもありがとうございました!実際には、私がやっているのは、io.emit()を使ってメッセージを表示し、配列から 'user'も削除することです。すべてが今完璧に動作します!私はほとんどsocket.ioをあきらめようとしていましたが、今は前進します。 – Arjun