@@ -987,8 +987,8 @@ class webpeerjs{
987987 #updatePeers( ) {
988988 this . #connectedPeersArr. length = 0
989989 for ( const peer of this . #connectedPeers) {
990- const item = { id : peer [ 0 ] , address : peer [ 1 ] . addrs }
991- this . #connectedPeersArr. push ( item )
990+ const id = peer [ 0 ]
991+ this . #connectedPeersArr. push ( id )
992992 }
993993
994994 //update status
@@ -1214,38 +1214,51 @@ class webpeerjs{
12141214 }
12151215
12161216
1217- //check the last seen in web peer
1217+ //check the last seen in webpeer network
12181218 #trackLastSeen( ) {
1219+
12191220 const timeout = 20 * 1000
12201221 const forcetimeout = 60 * 1000
1221- const now = new Date ( ) . getTime ( )
1222+ const now = new Date ( ) . getTime ( ) ;
1223+
1224+
1225+ //trackm room member
1226+ const peers = this . #connectedPeersArr;
1227+ const rooms = Object . entries ( this . #rooms)
1228+ for ( const room of rooms ) {
1229+ const roomname = room [ 0 ] ;
1230+ const roommembers = room [ 1 ] . members ;
1231+ for ( const member of roommembers ) {
1232+ if ( member === this . id ) {
1233+ continue ;
1234+ }
1235+ if ( ! peers . includes ( member ) ) {
1236+ const index = this . #rooms[ roomname ] . members . indexOf ( member )
1237+ this . #rooms[ roomname ] . members . splice ( index , 1 )
1238+ this . #rooms[ roomname ] . onMembers ( this . #rooms[ roomname ] . members )
1239+ }
1240+ }
1241+ }
1242+
12221243
12231244 //if webpeer last seen grather then timeout send onDisconnect
12241245 for ( const peer of this . #connectedPeers) {
12251246 const id = peer [ 0 ]
12261247 const last = peer [ 1 ] . last
12271248 const time = now - last
12281249 if ( ( time > timeout && ! this . #isConnected( id ) ) || ( time > forcetimeout ) ) {
1229- //console.log('time',time)
1250+
1251+ //remove peer id from peers
12301252 this . #connectedPeers. delete ( id )
12311253 this . #updatePeers( )
12321254 this . #onDisconnectFn( id )
12331255
1234- //remove id from room member
1235- const rooms = Object . keys ( this . #rooms)
1236- for ( const room of rooms ) {
1237- if ( this . #rooms[ room ] . members . includes ( id ) ) {
1238- const index = this . #rooms[ room ] . members . indexOf ( id )
1239- this . #rooms[ room ] . members . splice ( index , 1 )
1240- this . #rooms[ room ] . onMembers ( this . #rooms[ room ] . members )
1241- }
1242- }
1243-
12441256 }
12451257 }
1258+
12461259 }
12471260
1248- //check if this id is connected
1261+ //check if peer is connected
12491262 #isConnected( id ) {
12501263 let peers = [ ]
12511264 for ( const peer of this . #libp2p. getPeers ( ) ) {
0 commit comments