console.log(‘create RTCPeerConnection!’);
if(!pc){
pc = new RTCPeerConnection(pcConfig);
…
//文本聊天
pc.ondatachannel = e =>{
// if(!dc){
dc= e.channel;
dc.onmessage =reveivemsg;
dc.onopen = dataChannelStateChange;
dc.onclose = dataChannelStateChange;
dc.onerror = dataChannelError;
// }
}
…
}
}
创建本地流媒体链接时创建DataChannel
- 接收数据
//文本对方传过来的数据
function reveivemsg(e){
var msg = e.data;
console.log(‘recreived msg is :’+e.data);
if(msg){
chat.value += ‘->’ + msg + ‘\r\n’;
}else{
console.error(‘recreived msg is null’);
}
}
- 监听通道是否打通
function dataChannelStateChange(){
var readyState=dc.readyState;
if(readyState===‘open’){
send_txt.disabled =false;
btnSend.disabled=false;
}else{
send_txt.disabled = true;
btnSend.disabled =true;
}
}
- 发送消息
//发送消息
function sendText(){
var data = send_txt.value;
if(data){
dc.send(data);
}
send_txt.value=“”;
chat.value += ‘<-’ +data+‘\r\n’;
}
- 效果
- html
Connect Sig Server
Leave