WebRTC 1对1音视频通话 信令协议设计

主要逻辑图

蓝色部分为主要 信令逻辑 (注意箭头)
在这里插入图片描述

信令逻辑

采用json封装格式

1. join 加入房间 
2. resp­_join 当join房间后发现房间已经存在另一个人时则返回另一个人的uid;如果只有自己则不返回 
3. leave 离开房间,服务器收到leave信令则检查同一房间是否有其他人,如果有其他人则通知他有人离开 
4. new­peer 服务器通知客户端有新人加入,收到new­peer则发起连接请求 
5. peer­leave 服务器通知客户端有人离开 
6. offer 转发offer sdp 
7. answer 转发answer sdp
8. candidate 转发candidate sdp

比较绕的逻辑
1 resp­_join A先进入房间 B后进入房间后 给B返回A的基本信息
2 new_peer A先进入房间 B进入房间后 给A返回B的基本信息

join

var jsonMsg = {
    
    
 'cmd': 'join', 
 'roomId': roomId,
  'uid': localUserId
  };

resp­join

jsonMsg = {
    
     
	'cmd': 'resp‐join',
    'remoteUid': remoteUid 
    };

leave

var jsonMsg = {
    
     
	'cmd': 'leave', 
	'roomId': roomId, 
	'uid': localUserId 
	};

new­peer

var jsonMsg = {
    
     
	 'cmd': 'new‐peer',
	 'remoteUid': uid 
	  };

peer­leave

var jsonMsg = {
    
     
	 'cmd': 'peer‐leave',
	 'remoteUid': uid 
	 };

offer

var jsonMsg = {
    
    
	'cmd': 'offer', 
	'roomId': roomId, 
	'uid': localUserId, 
	'remoteUid':remoteUserId, 
	'msg': JSON.stringify(sessionDescription)
	 };

answer

 var jsonMsg = {
    
     
 	 'cmd': 'answer', 
 	 'roomId': roomId, 
 	 'uid': localUserId, 
 	 'remoteUid':remoteUserId, 
 	 'msg': JSON.stringify(sessionDescription) 
 	  };

candidate

var jsonMsg = {
    
     
	 'cmd': 'candidate', 
	 'roomId': roomId, 
	 'uid': localUserId, 
	 'remoteUid':remoteUserId, 
	 'msg': JSON.stringify(candidateJson) 
	 };

猜你喜欢

转载自blog.csdn.net/qq_33329316/article/details/124740960