之前我们说到媒体协商和网络协商,如果有不清楚的读者可以观看上一篇文章进行了解。
这一章我们讲一下信令服务器,当webrtc要进行两端通讯的时候,双方设备必须要交换解码方式、网外ip以及端口,在webRTC中我们叫它媒体信息(sdp)和网络信息(candidate)。
信令服务器一般部署在外网或者两端设备都能接收到的内网。它就能够帮助通信双方交换以上信息,并且为其规划“房间”。
房间
一个服务器内不可能只存在两个用户进行视频聊天,那么如何在众多的用户中,将通信发给指定的人呢?这就需要A用户给B用户传递信令的时候,同时把房间号加上,当双方的房间号相同时,才能接收数据流。
管理
在代码中,我们一般使用Map方式来对信令服务器进行管理。
var ZeroRTCMap = function () {
this.entryPeos = new Array();
// 进入
this.put = function (key, vlaue) {
var index = this.getIndex(key); //人员进入之后,查找是否已经重复
if (index == -1) {
var entryItem = new Object();
entryItem.key = key;
entryItem.vlaue = vlaue;
} else {
}
}
//获取
this.get = function (key, vlaue) {
}
//清理
this.clear = function (key, vlaue) {
}
//包含
this.contains = function (key, vlaue) {
}
this.getIndex = function (key) {
for (let i = 0; i < this.entryPeos.length) {
var entryItem = this.entryPeos[i];
if (entryItem.key = key) {
return i;
} else {
return -1;
}
}
}
}