# TypeError: Cannot call method 'hasAudio' of undefined (socket.on.disconnect)

**URL:** https://discourse.lynckia.com/t/typeerror-cannot-call-method-hasaudio-of-undefined-socket-on-disconnect/36
**Category:** Uncategorized
**Created:** [December 6, 2014, 10:43pm UTC](https://discourse.lynckia.com/t/typeerror-cannot-call-method-hasaudio-of-undefined-socket-on-disconnect/36 "2014-12-06T22:43:05Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Jose\_Ramon\_Huerga](https://avatars.discourse-cdn.com/v4/letter/j/f07891/32.png) [@Jose\_Ramon\_Huerga](https://discourse.lynckia.com/u/Jose_Ramon_Huerga)
#### Post date: [December 6, 2014, 10:43pm UTC](https://discourse.lynckia.com/t/typeerror-cannot-call-method-hasaudio-of-undefined-socket-on-disconnect/36/1 "2014-12-06T22:43:05Z")

</div>

erizo controller has crashed in my machine. I have had to manually restart  
it. I paste below the error I got and the relevant piece of code.

any ideas ?

thanks .

\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<\<

2014-12-06 21:58:37.211 - INFO: ErizoController - Socket disconnect  
jMBvN-HEBsQX0LupdrVP  
2014-12-06 21:58:37.212 - INFO: ErizoController - Sending message to  
FYBaKUBK0LoQO1LidrUV in room 543a5d23436a0aa105fef97d  
2014-12-06 21:58:37.212 - INFO: ErizoController - Sending message to  
jMBvN-HEBsQX0LupdrVP in room 543a5d23436a0aa105fef97d  
2014-12-06 21:58:37.212 - INFO: ErizoController - Sending message to  
FYBaKUBK0LoQO1LidrUV in room 543a5d23436a0aa105fef97d  
2014-12-06 21:58:37.212 - INFO: ErizoController - Sending message to  
jMBvN-HEBsQX0LupdrVP in room 543a5d23436a0aa105fef97d  
2014-12-06 21:58:37.212 - INFO: RoomController - Removing subscriptions  
of jMBvN-HEBsQX0LupdrVP

/home/ubuntu/licode/erizo\_controller/erizoController/erizoController.js:683  
if (socket.room.streams[id].hasAudio() ||  
socket.room.  
^  
TypeError: Cannot call method ‘hasAudio’ of undefined  
at Socket.  
(/home/ubuntu/licode/erizo\_controller/erizoController/erizoController.js:683:53)  
at Socket.emit [as $emit] (events.js:95:17)  
at Socket.onDisconnect  
(/home/ubuntu/licode/node\_modules/socket.io/lib/socket.js:153:10)  
at SocketNamespace.handleDisconnect  
(/home/ubuntu/licode/node\_modules/socket.io/lib/namespace.js:229:46)  
at Manager.onClientDisconnect  
(/home/ubuntu/licode/node\_modules/socket.io/lib/manager.js:501:29)  
at WebSocket.Transport.end  
(/home/ubuntu/licode/node\_modules/socket.io/lib/transport.js:467:20)  
at null.\_onTimeout  
(/home/ubuntu/licode/node\_modules/socket.io/lib/transport.js:268:12)  
at Timer.listOnTimeout [as ontimeout] (timers.js:112:15)  
2014-12-06 21:58:46.806 - INFO: CloudHandler - ErizoController 1 in  
54.186.93.49 does not respond. Deleting it.

651 socket.on(‘disconnect’, function () {  
652 var i, index, id;  
653  
654 [log.info](http://log.info)('Socket disconnect ', [socket.id](http://socket.id));  
655  
656 for (i in socket.streams) {  
657 if (socket.streams.hasOwnProperty(i)) {  
658 sendMsgToRoom(socket.room, ‘onRemoveStream’, {id:  
socket.streams[i]});  
659 }  
660 }  
661  
662 if (socket.room !== undefined) {  
663  
664 for (i in socket.room.streams) {  
665 if (socket.room.streams.hasOwnProperty(i)) {  
666  
socket.room.streams[i].removeDataSubscriber([socket.id](http://socket.id));  
667 }  
668 }  
669  
670 index = socket.room.sockets.indexOf([socket.id](http://socket.id));  
671 if (index !== -1) {  
672 socket.room.sockets.splice(index, 1);  
673 }  
674  
675 if (socket.room.controller) {  
676  
socket.room.controller.removeSubscriptions([socket.id](http://socket.id));  
677 }  
678  
679 for (i in socket.streams) {  
680 if (socket.streams.hasOwnProperty(i)) {  
681 id = socket.streams[i];  
682  
_683 if (socket.room.streams[id].hasAudio() ||  
socket.room.streams[id].hasVideo() || socket.room.streams[id].hasScreen())  
{_  
684 if (!socket.room.p2p) {  
685  
socket.room.controller.removePublisher(id);  
686 if  
(GLOBAL.config.erizoController.sendStats) {  
687 var timeStamp = new Date();  
688 rpc.callRpc(‘stats\_handler’,  
‘event’, [{room: [socket.room.id](http://socket.room.id), user: [socket.id](http://socket.id), type: ‘unpublish’,  
stream: id, timestamp : timeStamp.getTime()}]);  
689 }  
690 }  
691  
692 }
