美文网首页
webrtc信令服务器2.0

webrtc信令服务器2.0

作者: 爷爷的乌龙茶 | 来源:发表于2020-01-16 12:41 被阅读0次

1.功能

为了更好的适配云边端架构和支持多方通信,在1.0基础上新增了房间和边端适配。

无论连接在边端还是云端的客户端,连接方式都是相同的。连接在边端的客户端,边端信令服务器会将请求转发,所有的房间的创建,都会在云端。

考虑防火墙的限制,边端服务器在设计的时候需要指定socketClient的端口(相对于云端来说,它也是一个客户端)。

由于边端服务器只会建立一个socket链接(下面可能连着多个客户终端),所以不再使用在1.0上socketClient与用户绑定的做法,而是在onconnect的时候在URL中传递用户名数组,一个socket连接中,可能含有多个用户,name会作为客户端整个连接周期的主键。

取消了具有排他性的一对一建立连接的指令。

2.格式

客户端服务端通用JSON格式:{

        "event"    :    "create",

        "sender"    :    "client1",    

        "receiver"    :    "client2" , 

        "message"    :    "",

        "success"    :    true 

}

event:事件

sender : 发送者,每次发送请求都需要携带,“server”为服务端保留字。

receiver : 接收者,客户端在发送服务端处理事件指令时可不指定 。

message:事件内容

success:客户端叫之间的通信成功标识

3.客户端发送事件 

onconnect

建立websocket连接,IO.socket("127.0.0.1:8201?name=client1,client2"),name为该用户的唯一标识,保存在user.label中,

服务端返回房间列表(roomUpdate事件)。

服务端处理的事件

create

创建房间:{

        "event"    :    "create",

        "sender"    :    "client1",    

        "receiver"    :    null, 

        "message"    :   null,

        "success"    :    true 

}

创建成功,服务端返回房间内成员列表(update事件)

创建失败,服务端返回错误事件(error事件)

join

加入房间:{

        "event"    :    "join",

        "sender"    :    "client2",    

        "receiver"    :    null, 

        "message"    :   "client1",(房间名)

        "success"    :    true 

}

加入成功,服务端返回房间内成员列表(update事件)

加入失败,服务端返回错误事件(error事件)

quit

退出房间:{

        "event"    :    "quit",

        "sender"    :    "client2",    

        "receiver"    :    null, 

        "message"    :   null,

        "success"    :    true 

}

房主退出,会向房间成员发送解散事件(dismiss事件)

退出成功,服务端返回房间列表(roomUpdate事件)

退出失败,服务端返回错误事件(error事件)

由服务端转发,客户端处理的事件

offer

webrtc对接请求

{

        "event"    :    "offer",

        "sender"    :    "client1",    

        "receiver"    :    "client2", (接收者为必填项)

        "message"    :   object,

        "success"    :    true 

}

answer

webrtc对接请求

{

        "event"    :    "answer",

        "sender"    :    "client1",    

        "receiver"    :    "client2", (接收者为必填项)

        "message"    :   object,

        "success"    :    true 

}

candidate

webrtc对接请求

{

        "event"    :    "candidate",

        "sender"    :    "client1",    

        "receiver"    :    "client2", (接收者为必填项)

        "message"    :   object,

        "success"    :    true 

}

disconnect

若为房间成员,服务端会向其他房间成员发送房间内成员列表(update事件)

若为房主,服务端会向房间成员发送解散事件(dismiss事件)

4.服务端返回事件

roomUpdate

房间更新事件:{

        "event"    :    "roomUpdate",

        "message"    :["client1" , "client2"],(房间名称列表)

        "success"    :    true,

        "receiver"    :    “client3”,

        "sender"    :    "server",

}

update

房间内成员更新事件:{

        "event"    :    "update",        

        "message"    :    {

                "owner"    :    {

                        "status"   :    “on_live”

                        "label"   :    "client1"(亦是房间名称)

                        "value"   :    "123456"(socket sessionId)

                        "address"   :    "127.0.0.1:8202"

                },

                "userList"    :    [{

                        "status"   :    “on_live”

                        "label"   :    "client1"

                         "value"   :    "123456"(socket sessionId)

                        "address"   :    "127.0.0.1:8202"

                }]

        }

        "success"    :    true,

        "receiver"    :    "client1",

        "sender"    :    "server",

}

dismiss

房间解散事件:{

        "event"    :    "dismiss",

        "message"    :"client3"(被解散的房间名称)

        "success"    :    true,

        "receiver"    :    "client1",

        "sender"    :    "server",

}

error

错误事件:{

        "event"    :    "error",

        "message"    :"5010"(详见错误代码集合)

        "success"    :    true,

        "receiver"    :    "client1",

        "sender"    :    "server",

}

5.错误代码集合

ERROR_5010("已在房间内,不允许加入其他房间。")

ERROR_5011("房间已满。")

ERROR_5101("参数格式无效(json)")

ERROR_5104("已存在相同名称用户")

ERROR_5105("用户不存在")

ERROR_5106("socket error")

ERROR_5107("房间不存在")

相关文章

  • WebRTC 服务器要干些什么

    概述 WebRTC 的服务器大体分为信令服务器和媒体服务器 WebRTC 信令服务器是主要功能是为 WebRTC ...

  • webrtc信令服务器2.0

    1.功能 为了更好的适配云边端架构和支持多方通信,在1.0基础上新增了房间和边端适配。 无论连接在边端还是云端的客...

  • Webrtc服务器搭建

    Webrtc服务器包括:房间服务器(Room Server)、信令服务器(Signaling Server)、防火...

  • WebRTC信令交互流程

    WebRTC信令交互流程: 上述序列中,WebRTC并不提供Stun服务器和Signal服务器,服务器端需要自己实...

  • WebRTC学习(二)

    信令服务器 没有信令服务器,各个WebRTC之间是没办法通信的。传递媒体数据有两个信息,必须经过信令服务器进行交换...

  • Web网页音视频通话之基于SIPJS

    简述本文是以FreeSwitch作为信令服务器,通过sipjs(基于webRtc) 进行媒体协商,网络协商后,进行...

  • js实现WebRTC点对点视频通话

    先看页面代码,这里使用的webRTC原生的API。目前信令服务器使用的是websocket实现的,后续改成将soc...

  • WebRTC客户端主要流程分析

    通信过程 因为WebRTC规范里没有包含信令协议,所以像OWT、mediasoup等支持WebRTC的开源项目,其...

  • WebRTC之信令篇

    在WebRTC中,信令发挥着举足轻重的作用,但是webrtc工作组并没有对信令交互进行标准化,留给开发人员自行选择...

  • webrtc

    使用WebRTC搭建前端视频聊天室——入门篇使用WebRTC搭建前端视频聊天室——信令篇Android之WebRTC介绍

网友评论

      本文标题:webrtc信令服务器2.0

      本文链接:https://www.haomeiwen.com/subject/jttxzctx.html