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 }); });
반응형
'lang > node' 카테고리의 다른 글
n 을 이용한 nodejs 설치 및 관리 (0) | 2016.05.13 |
---|---|
node v6.0.0 (0) | 2016.05.11 |
npm CLI Commands (0) | 2016.02.18 |
Nodejs Mysql PROTOCOL_ENQUEUE_AFTER_QUIT 에러 (0) | 2016.02.02 |
Node.js Arguments (0) | 2016.01.28 |