From 3a2d7f40c89ad74b9674320754d2e7038fe305c0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A7=89?= Date: Sat, 30 Sep 2023 23:56:00 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=89=E5=BE=85=20datachannel=20=E6=89=93?= =?UTF-8?q?=E5=BC=80(=E4=B8=B4=E6=97=B6=E8=A7=A3=E5=86=B3=E6=96=B9?= =?UTF-8?q?=E6=A1=88)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/client.js | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/public/client.js b/public/client.js index b4bc5d4..3a7df9e 100644 --- a/public/client.js +++ b/public/client.js @@ -38,8 +38,14 @@ export default class ClientList { } webrtc.ondatachannel = ({ channel }) => { console.log('收到对方 datachannel', channel) + channel.onopen = event => { + console.log('收到对方 datachannel open', event) + if (this.channels[event.target.label]) { + this.channels[event.target.label].onopen(event, this.clientlist.find(x => x.id === data.id)) + } + } channel.onmessage = event => { - //console.log('收到对方 datachannel message', event) + console.log('收到对方 datachannel message', event) if (this.channels[event.target.label]) { this.channels[event.target.label].onmessage(event, this.clientlist.find(x => x.id === data.id)) } @@ -137,7 +143,11 @@ export default class ClientList { //console.log('广播数据:', data, '到通道:', name, '到所有客户端') this.clientlist.forEach(client => { console.log('发送数据到客户端:', client.id, client.name, '通道:', name, '数据:', data) - client.channels.filter(ch => ch.label === name).forEach(ch => { + client.channels.filter(ch => ch.label === name).forEach(async ch => { + // 等待 datachannel 打开(临时解决方案) + while (ch.readyState !== 'open') { + await new Promise(resolve => setTimeout(resolve, 100)) + } ch.send(data) }) })