用户更新

This commit is contained in:
2023-10-21 04:47:40 +08:00
parent e6af4f0fc7
commit 07b6370ff8
2 changed files with 14 additions and 21 deletions

View File

@ -139,14 +139,11 @@ export default class ClientList {
return { webrtc, channels } return { webrtc, channels }
} }
if (data.type === 'list') { if (data.type === 'list') {
//console.debug('取得在线对端列表:', data)
const { webrtc, channels } = await webrtc_init() const { webrtc, channels } = await webrtc_init()
//console.debug('发送给对方 offer')
const offer = await webrtc.createOffer() const offer = await webrtc.createOffer()
await webrtc.setLocalDescription(offer) await webrtc.setLocalDescription(offer)
this.clientlist.push({ id: data.id, name: data.name, webrtc, channels }) this.clientlist.push({ id: data.id, name: data.name, webrtc, channels })
websocket.send(JSON.stringify({ type: 'offer', id: data.id, offer })) websocket.send(JSON.stringify({ type: 'offer', id: data.id, offer }))
// 传递正确的指针给元素, 以便其能够调取正确的头像
this.push(this.clientlist.find(client => client.id === data.id)) this.push(this.clientlist.find(client => client.id === data.id))
return return
} }
@ -159,12 +156,9 @@ export default class ClientList {
return this.exit(data) return this.exit(data)
} }
if (data.type === 'offer') { if (data.type === 'offer') {
//console.debug('收到对方 offer', data)
const { webrtc, channels } = await webrtc_init() const { webrtc, channels } = await webrtc_init()
this.clientlist.push({ id: data.id, name: data.name, webrtc, channels }) this.clientlist.push({ id: data.id, name: data.name, webrtc, channels })
// 传递正确的指针给元素, 以便其能够调取正确的头像
this.push(this.clientlist.find(client => client.id === data.id)) this.push(this.clientlist.find(client => client.id === data.id))
//console.debug('发送给对方 answer')
await webrtc.setRemoteDescription(data.offer) await webrtc.setRemoteDescription(data.offer)
const answer = await webrtc.createAnswer() const answer = await webrtc.createAnswer()
await webrtc.setLocalDescription(answer) await webrtc.setLocalDescription(answer)
@ -172,13 +166,11 @@ export default class ClientList {
return return
} }
if (data.type === 'answer') { if (data.type === 'answer') {
//console.debug('收到对方 answer', data)
const webrtc = this.clientlist.find(client => client.id === data.id).webrtc const webrtc = this.clientlist.find(client => client.id === data.id).webrtc
await webrtc.setRemoteDescription(data.answer) await webrtc.setRemoteDescription(data.answer)
return return
} }
if (data.type === 'candidate') { if (data.type === 'candidate') {
//console.debug(data.name, '发来 candidate 候选通道')
const webrtc = this.clientlist.find(client => client.id === data.id).webrtc const webrtc = this.clientlist.find(client => client.id === data.id).webrtc
await webrtc.addIceCandidate(data.candidate) await webrtc.addIceCandidate(data.candidate)
return return
@ -240,25 +232,26 @@ export default class ClientList {
const id = localStorage.getItem('id') const id = localStorage.getItem('id')
const username = localStorage.getItem('username') const username = localStorage.getItem('username')
const avatar = localStorage.getItem('avatar') const avatar = localStorage.getItem('avatar')
console.log('我的帐户:', { id, username, avatar })
this.push({ id, name: username, avatar }, true) this.push({ id, name: username, avatar }, true)
} }
async 用户列表() {} async 用户列表() {}
async 用户加入({ name, id }) { async 用户加入(data) {
await set(id, { name, id }, this.store) await set(data.id, data, this.store)
this.push(data)
} }
async 用户离开({ id }) { async 用户离开({ id }) {
await del(id, this.store) await del(id, this.store)
} }
getAvatar(id) { } async 用户更新({ id, name, avatar }) {
setAvatar(user) { const client = this.clientlist.find(client => client.id === id)
//console.info('更新avatar', user) if (client.name !== name) {
document.getElementById(user.id).querySelector('img').src = user.avatar client.name = name
const u = this.clientlist.find(client => client.id === user.id) document.getElementById(id).querySelector('span').textContent = name
u.avatar = user.avatar }
//console.log(u, user) if (client.avatar !== avatar) {
//.avatar = user.avatar client.avatar = avatar
document.getElementById(id).querySelector('img').src = avatar
}
} }
exit(item) { exit(item) {
const client = this.clientlist.find(client => client.id === item.id) const client = this.clientlist.find(client => client.id === item.id)

View File

@ -257,7 +257,7 @@ clientList.setChannel('profile', {
const data = JSON.parse(event.data) const data = JSON.parse(event.data)
client.name = data.name client.name = data.name
client.avatar = data.avatar client.avatar = data.avatar
clientList.setAvatar({ id: client.id, ...data }) clientList.用户更新({ id: client.id, ...data })
}, },
onclose: event => { onclose: event => {
console.log('关闭信道', event.target.label) console.log('关闭信道', event.target.label)