メインロジックダイアグラム
青い部分は主要なシグナリング ロジックです (矢印に注意してください)。
シグナリング ロジック
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 に入り、部屋に入った後、A の基本情報を B に返します
2 new_peer A が最初に部屋 B に入り、部屋に入ってから B の基本情報を A に返します
加入
var jsonMsg = {
'cmd': 'join',
'roomId': roomId,
'uid': localUserId
};
応答する
jsonMsg = {
'cmd': 'resp‐join',
'remoteUid': remoteUid
};
離れる
var jsonMsg = {
'cmd': 'leave',
'roomId': roomId,
'uid': localUserId
};
新人
var jsonMsg = {
'cmd': 'new‐peer',
'remoteUid': uid
};
ピアリーブ
var jsonMsg = {
'cmd': 'peer‐leave',
'remoteUid': uid
};
オファー
var jsonMsg = {
'cmd': 'offer',
'roomId': roomId,
'uid': localUserId,
'remoteUid':remoteUserId,
'msg': JSON.stringify(sessionDescription)
};
答え
var jsonMsg = {
'cmd': 'answer',
'roomId': roomId,
'uid': localUserId,
'remoteUid':remoteUserId,
'msg': JSON.stringify(sessionDescription)
};
候補者
var jsonMsg = {
'cmd': 'candidate',
'roomId': roomId,
'uid': localUserId,
'remoteUid':remoteUserId,
'msg': JSON.stringify(candidateJson)
};