Skip to content

Commit 0d8a8da

Browse files
committed
refactor room members tracker
1 parent 8b2af4f commit 0d8a8da

2 files changed

Lines changed: 30 additions & 17 deletions

File tree

src/webpeer.js

Lines changed: 29 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -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()){

test/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ <h3>Log: <span id="logCount">0</span></h3>
133133
connectedWebPeersListEl.innerHTML = ''
134134
for (const peer of peers) {
135135
const peerEl = document.createElement('li')
136-
peerEl.innerText = peer.id
136+
peerEl.innerText = peer
137137
connectedWebPeersListEl.appendChild(peerEl)
138138
}
139139
}

0 commit comments

Comments
 (0)