diff --git a/public/client.js b/public/client.js index b499055..99491c2 100644 --- a/public/client.js +++ b/public/client.js @@ -62,8 +62,18 @@ export default class ClientList { } } } - webrtc.oniceconnectionstatechange = event => { - console.log('WebRTC ICE 连接状态更改:', webrtc.iceConnectionState) + webrtc.oniceconnectionstatechange = async event => { + console.log('WebRTC ICE 连接状态更改:', webrtc.iceConnectionState, event) + if (webrtc.iceConnectionState === 'disconnected') { + console.log('WebRTC ICE connection disconnected') + // 如果用户没有离线, 则尝试重连 + if (this.clientlist.find(x => x.id === data.id)) { + console.log('用户仍在线, 尝试重连...') + const offer = await webrtc.createOffer() + await webrtc.setLocalDescription(offer) + websocket.send(JSON.stringify({ type: 'offer', id: data.id, offer })) + } + } } const channels = Object.entries(this.channels).map(([name, callback]) => { const channel = webrtc.createDataChannel(name, { reliable: true })