lang/node
socket.io disconnect 전에 socket.leave 처리
C/H
2016. 3. 9. 08:30
socket.io 1.x 에서 disconnect 이벤트는 socket 에 저장된 id가 이미 삭제된 상태로 disconnect 이벤트가 처리된다.
join된 room정보가 필요할 경우 socket.io 의 onclose 를 오버라이딩해서 처리하면 된다.
io.of('/').on('connection', function(socket) { // overridding, ref:node_modules/socket.io/lib/socket.js:416 socket.onclose = function( reason ){ if (!this.connected) return this; //debug('closing socket - reason %s', reason); myfunc( this.id ); // myfunc(); this.leaveAll(); this.nsp.remove(this); this.client.remove(this); this.connected = false; this.disconnected = true; delete this.nsp.connected[this.id]; this.emit('disconnect', reason); }; socket.emit('connected', 'welcome to socket server'); socket.on('event', function( data ){ // process }); });
반응형