javascript - Event disconnect -
i'm trying larn nodejs french tutorial chat nodejs https://www.youtube.com/watch?v=8jkkd2ohte8
but can't user leave room.
server.js
var http = require('http'); httpserver = http.createserver(function(req, res){ // magic }); httpserver.listen(1337); var io = require('socket.io').listen(httpserver); var users = {}; io.sockets.on('connection', function(socket){ var user = false; for(var k in users){ socket.emit('newuser', users[k]); } socket.on('login', function(user){ user = user; users[user.id] = user; io.sockets.emit('newuser', user); }); // here problem socket.on('disconnect', function(){ console.log('logout'); console.log(user); if(!user){ homecoming false; } delete users[user.id]; io.sockets.emit('logout', user) }); });
and client.js
(function($){ var socket = io.connect('http://localhost:1337'); var rand = math.floor((math.random() * 1000) + 1); socket.emit('login', { id : rand, username : 'guest' + rand }) socket.on('newuser', function(user){ $('#users').append('<li id="u'+ user.id +'"><a href="http://rencontre-ados.net/profil'+ user.id +'">'+ user.username + '</a></li>'); }); socket.on('logout', function(user){ $('#users #u'+ user.id).remove(); }); })(jquery);
when disconnect chat logout appear in console user false can't remove id list of connected users.
you need save user in users socket.id since have access socket.id in disconnect event:
socket.on('login', function(user){ users[socket.id] = user; // <<<<< utilize socket.id io.sockets.emit('newuser', user); }); socket.on('disconnect', function(){ var user = users[socket.id]; // <<<< utilize socket.id console.log('logout'); console.log(user); io.sockets.emit('logout', user) delete users[socket.id]; });
javascript node.js
No comments:
Post a Comment