bugfix
This commit is contained in:
parent
4d4e217c75
commit
8b39dfd3e5
@ -13,12 +13,15 @@ bricks.Signaling = class {
|
||||
this.info = opts.info;
|
||||
this.peers = [];
|
||||
this.sessions = {};
|
||||
this.handlers = {};
|
||||
this.sessionhandlers = {};
|
||||
this.init_websocket();
|
||||
}
|
||||
|
||||
init_websocket(){
|
||||
this.socket = new WebSocket(this.signaling_url);
|
||||
this.socket.onmessage = this.signaling_message_handle.bind(this);
|
||||
this.socket.onopen = this.signaling_login.bind(this);
|
||||
this.socket.onmessage = this.signal_recvdata.bind(this);
|
||||
this.socket.onopen = this.login.bind(this);
|
||||
this.socket.onclose = function(){
|
||||
this.init_websockset();
|
||||
};
|
||||
@ -28,8 +31,57 @@ bricks.Signaling = class {
|
||||
} catch(e){
|
||||
console.log('error,', e);
|
||||
}
|
||||
this.init_websocket();
|
||||
};
|
||||
}
|
||||
async signaling_recvdata(event){
|
||||
var datapkg = JSON.parse(event.data);
|
||||
var data = datapkg.data;
|
||||
var name = data.sessionid
|
||||
var handler = this.handlers.get(name)
|
||||
if (!handler){
|
||||
handler = this.recvdata_handler.bind(this)
|
||||
}
|
||||
await handler(data);
|
||||
}
|
||||
add_handler(key, handler){
|
||||
this.handlers[key] = handler;
|
||||
}
|
||||
add_sessionhandler(sessiontype, handler){
|
||||
self.sessionhandlers[sessiontype] = handler;
|
||||
}
|
||||
async recvdata_handler(data){
|
||||
if (data.type == 'login'){
|
||||
this.peers[data.msgfrom.id] = data.msgfrom;
|
||||
return;
|
||||
if (data.type == 'logout'){
|
||||
var peers = {};
|
||||
Object.keys(this.peers).forEach(k =>{
|
||||
if (k != data.msgfrom.id){
|
||||
peers[k] = this.peers[k];
|
||||
}
|
||||
});
|
||||
}
|
||||
if (data.type == 'new_session'){
|
||||
}
|
||||
}
|
||||
new_session(sessiontype, opts){
|
||||
var k = this.sessionhandlers.get(sessiontype);
|
||||
if (!k){
|
||||
throw 'new_session() exception(' + sessiontype + ')';
|
||||
}
|
||||
var d = {
|
||||
type:'new_session',
|
||||
session: {
|
||||
sessiontype:sessiontype,
|
||||
sessionid:bricks.uuid()
|
||||
}
|
||||
};
|
||||
this.send_data(d);
|
||||
var h = new k(this, sessiontype, opts);
|
||||
this.add_handler(sessionid, h.recvdata_handler);
|
||||
return h
|
||||
}
|
||||
login(){
|
||||
var d = {
|
||||
type:'login',
|
||||
@ -44,7 +96,7 @@ bricks.Signaling = class {
|
||||
this.send_data(d);
|
||||
}
|
||||
send_data(d){
|
||||
d.from = this.info;
|
||||
d.msgfrom = this.info;
|
||||
var s = JSON.stringify(d);
|
||||
self.socket.send(s);
|
||||
}
|
||||
@ -343,10 +395,10 @@ bricks.RTCClient = class extends bricks.VBox {
|
||||
break;
|
||||
case 'callRequest':
|
||||
if (this.auto_call_accept){
|
||||
this.call_accepted(d.from);
|
||||
this.call_accepted(d.msgfrom);
|
||||
return
|
||||
}
|
||||
this.need_conform_call(d.from);
|
||||
this.need_conform_call(d.msgfrom);
|
||||
console.log('callRequest branch exe');
|
||||
break;
|
||||
case 'offer':
|
||||
@ -366,15 +418,15 @@ bricks.RTCClient = class extends bricks.VBox {
|
||||
}
|
||||
break;
|
||||
case 'answer':
|
||||
console.log('#### receive_answer: d.from=', d.from, 'peer_info=', this.peer_info);
|
||||
if (d.from.id == this.peer_info.id){
|
||||
console.log('#### receive_answer: d.msgfrom=', d.msgfrom, 'peer_info=', this.peer_info);
|
||||
if (d.msgfrom.id == this.peer_info.id){
|
||||
var desc = new RTCSessionDescription(d.answer);
|
||||
await this.pc.setRemoteDescription(desc);
|
||||
console.log('answer branch exe');
|
||||
}
|
||||
break;
|
||||
case 'iceCandidate':
|
||||
if (d.from.id == this.peer_info.id){
|
||||
if (d.msgfrom.id == this.peer_info.id){
|
||||
var candidate = new RTCIceCandidate(d.candidate);
|
||||
await this.pc.addIceCandidate(candidate);
|
||||
console.log('iceCandidate branch exe');
|
||||
|
Loading…
Reference in New Issue
Block a user