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("房间不存在")
网友评论