一、http post
url: https://room.youngget.com/api/agoraws/init 【测试暂用此url 正式版本会修改】
客户端发送数据:
{uid:用户id,roomid:房间id}
服务端返回数据:
{code:状态码,option:{account:", // 网易IM账号"appId_ag: "e84e858ce6d94c0babc05781fc3cf52b", // 声网appid当房间SDK是声网时会返回appKey: "c7349109e484d80c05b0d12ca272a89b", // 网易IM appkeytoken: "ba25a5dd1b3dd4ea6f3e92d07792711f", // 网易IM tokentoken_ag: "声网SDK客户端需要用到的token 当房间SDK是声网时会返回该token"token_ws: "用于客户端websocket连接建立时 填入头headers['sec-websocket-protocol']中"url_wss: "wss://room.youngget.com",},role:1, //用户角色room_no:"104", //房号roomKind:1, //房间类型teamid:***, //网易IM群idvideo_resolution: "720P",视频分辨self:{用户信息account_no: "101", // 用户账号avatar: "https://img.youngget.com/onlinePicture/default-avatar.png",// 头像id: "lv-u-101"imid: "lv-u-101" // 网易IM账号inittime: "-1"nick_name: "nick_lv_101" // 昵称role: 1roomid: "lvroomid004"sex: "1" // 性别},members:[房间内成员数组{account_no: "101"avatar: "https://img.youngget.com/onlinePicture/default-avatar.png"id: "lv-u-101"imid: "lv-u-101"nick_name: "nick_lv_101"role: "1"roomid: "lvroomid004"sex: "1"}],online:{ 当前连麦1:"empty" // 1号麦为空闲2: "lv-u-102" // 2号麦为用户 lv-u-1023: "empty" // 3号麦为空闲},//当前排麦列表queuequeue: ["lv-u-101", "1546671026636", "用户x的id", "用户x进入排麦列表的时间戳"]}
返回值说明:
code
101, // roomid对应的房间不存在
102, // uid用户无权创建roomid房间
103, // uid用户有权创建roomid房间
104, // uid用户无权加入roomid房间
105, // uid用户有权加入roomid房间
role
1, // 用户在房间内的角色 - 主教练【房主】
2, // 用户在房间内的角色 - 副教练【副房主】
3, // 用户在房间内的角色 - 学员[可上麦]
4, // 用户在房间内的角色 -一般注册用户【非学员】
5, // 用户在房间内的角色 -游客[不可上麦]
二 、WebSocket客户端连接建立
需设置 头 headers[‘sec-websocket-protocol’]的值为第一步返回的 option.token_ws
三 、ws 客户端主动发起的通信命令
//cli->srv->cli
SM: 1, // 上麦[自己]
客户端发送 {c:1,d:{SN:1},i:1}
说明 c:命令常量值,d:客户端请求数据,i:客户端自维护的流水号
d:{SN:1} SN:上几号麦
服务端返回 {c: 1, i: 1, succ: true,tk: “房间SDK是声网时 所需的token”}
说明 c:命令常量值, i:客户端自维护的流水号
succ: 是否成功
SPM: 2, // 上排麦[自己]
客户端发送 {c:2,d:{uid:用户id},i:1}
服务端返回 {c: 2, i: 1, succ: true}
XM: 3, // 下麦[自己]
客户端发送 {c:3,d:{uid:用户id},i:1}
服务端返回 {c: 3, i: 4, succ: true, islm: true, tk: “房间SDK是声网时 所需的token”}
说明 islm: true 表示从 连麦列表中删除 false表示从排麦列表中删除
REMOVE_PM: 4, // 从排麦列表删除 [房主]
客户端发送 {c:4,d:{targetUid:删除目标用户id},i:1}
服务端返回 {c: 4, i: 1, succ: true}
TM: 5, // 踢麦
客户端发送 {c:5,d:{kickedid:踢麦目标用户id,SN:踢麦目标用户所在麦序号},i:1}
服务端返回 {c: 5, i: 1, succ: true}
BM: 6, // 抱麦
客户端发送 {c:6,d:{sm_uid:抱麦目标用户id,SN:抱麦目标麦序号},i:1}
服务端返回 {c: 6, i: 1, succ: true}
ANSWER_BM: 7, // 回复抱麦
客户端发送 {c:7,d:{bmuid:抱麦者id,SN:抱麦目标麦序号,isAgree:是否同意},i:1}
服务端返回 {c: 7, i: 1, succ: true}
四 服务端发送给客户端的通信命令
//srv->cli
BBM: 8, // 被抱麦
客户端收到 {c:8,d:{fromuid:抱麦者id,SN:抱麦目标麦序号}}
BTM: 9, // 被踢麦
客户端收到 {c:9}
MEMBER_ADDED: 10, // 成员列表添加
客户端收到 {c:10,d:{
uid: “lv-u-102”,
account_no: “102”,
avatar: “头像url”,
sex: “1”,
nick_name: “昵称”,
role: 2,
imid: “lv-u-102”
}}
MEMBER_DELETED: 11, // 成员列表删除
客户端收到 {c:11,d:{uid: “lv-u-102”}}
ONLENE_ADDED: 12, // 连麦列表添加
客户端收到 {c:12,d:{uid: “lv-u-102”,SN: 3}}
ONLENE_DELETED: 13, // 连麦列表删除
客户端收到 {c:13,d:{uid: “lv-u-102”,reason: “BM”}} // reason: “BM”当由于抱麦而被下麦时
QUEUE_ADDED: 14, // 排麦列表添加
客户端收到 {c:14,d:{uid: “lv-u-102”,score: “时间戳”}}
QUEUE_DELETED: 15, // 排麦列表删除
客户端收到 {c:15,d:{uid: “lv-u-102”}}
BM_REFUSED: 16, // 抱麦被对方拒绝
客户端收到 {c:16,d:{touid:被抱者id}}
KICKED_OF_BM: 17, // 由于抱麦命令而被踢麦 客户端收到 {c:17,d:{SN:麦序号}}
ROOM_NOTICE: 18, // 房间公告
