主要逻辑图
蓝色部分为主要 信令逻辑 (注意箭头)
信令逻辑
采用json封装格式
1. join 加入房间
2. resp_join 当join房间后发现房间已经存在另一个人时则返回另一个人的uid;如果只有自己则不返回
3. leave 离开房间,服务器收到leave信令则检查同一房间是否有其他人,如果有其他人则通知他有人离开
4. newpeer 服务器通知客户端有新人加入,收到newpeer则发起连接请求
5. peerleave 服务器通知客户端有人离开
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
};
respjoin
jsonMsg = {
'cmd': 'resp‐join',
'remoteUid': remoteUid
};
leave
var jsonMsg = {
'cmd': 'leave',
'roomId': roomId,
'uid': localUserId
};
newpeer
var jsonMsg = {
'cmd': 'new‐peer',
'remoteUid': uid
};
peerleave
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)
};