從v5.3.2開始、sdk增加直播聊天室功能、推出直播領(lǐng)域消息解決方案。
聊天室跟普通的IM群(微信群,QQ群等)相比最大的不同點在于它是一個比較開放的虛擬組織。我們可以將直播聊天室比喻成一個廣場,廣場是開放無邊界的,所有的人都可以隨進隨出,而群就像一個房間,是一個有邊界有容量上限的私密組織,并且進入這個房間需要一定條件,一般是主動申請加入或被邀請加入。
直播sdk相關(guān)接口分2大類別:
1.1.1 后臺Rest提供接口。具體參考文檔地址://www.hvjhxrn.cn/doc/sdk/server/2_5_1_8.html
(1) 創(chuàng)建聊天室
(2) 切換聊天室狀態(tài)(開啟/關(guān)閉)
1.1.2 SDK接口文檔(本頁面提供)
H5 SDK內(nèi)部提供的接口: 進入聊天室、聊天室內(nèi)發(fā)送消息、獲取聊天室信息、獲取聊天室成員、獲取成員信息、對成員進行禁言/拉黑、踢出、修改個人信息、修改聊天室信息、退出聊天室等接口。
(1) 創(chuàng)建者:可以對所有成員進行管理,包括禁言/解除禁言/拉黑/從黑名單移除/踢出/修改聊天室信息。
(2) 管理員:只能對成員進行管理,禁言/解除禁言/拉黑/從黑名單移除/踢出。
(3) 普通成員:無權(quán)限
var enterChatroomBuilder = new RL_YTX.EnterChatroomBuilder(); enterChatroomBuilder.setRoomId(roomId); enterChatroomBuilder.setNickName(nickName); enterChatroomBuilder.setInfoExt("小龍人"); enterChatroomBuilder.setNotifyExt("霸氣側(cè)漏進入房間!"); enterChatroomBuilder.setNeedNotify(2); RL_YTX.enterChatroom(enterChatroomBuilder,function (e) { IM.roomNumber = roomId; callback(e); },function (err) { console.error(err); })
//新建消息體對象 var obj = new RL_YTX.MsgBuilder(); //假設(shè)頁面存在一個id為file的<input type=”file”>元素 //獲取圖片或附件對象 var file = document.getElementById("file").files[0]; //設(shè)置圖片或附件對象 obj.setFile(file); //設(shè)置發(fā)送的文本內(nèi)容 obj.setText(text); //設(shè)置發(fā)送的消息類型1文本消息4 圖片消息6 附件消息 //發(fā)送非文本消息時,text字段將被忽略,發(fā)送文本消息時 file字段將被忽略 obj.setType(1); //設(shè)置接收者 obj.setReceiver(“roomId”); RL_YTX.sendMsg(obj, function(){ //發(fā)送消息成功 //處理用戶邏輯,通知頁面 }, function(obj){//失敗 //發(fā)送消息失敗 //處理用戶邏輯,通知頁面刷新,展現(xiàn)重發(fā)按鈕 }, function(sended, total){ //發(fā)送圖片或附件時的進度條 //如果發(fā)送文本消息,可以不傳該參數(shù) });
var FetchChatroomInfoBuilder = new RL_YTX.FetchChatroomInfoBuilder(IM.roomId); RL_YTX.fetchChatroomInfo(fetchChatroomInfoBuilder,function (obj) { console.log(obj); },function (err) { console.error(err); })
var updateChatroomInfoBuilder = new RL_YTX.UpdateChatroomInfoBuilder(); updateChatroomInfoBuilder.setRoomId(IM.roomId); if(type === "roomname"){ updateChatroomInfoBuilder.setRoomName(content);// 修改房間名稱 }else if(type === "announcement"){ updateChatroomInfoBuilder.setAnnouncement(content);// 修改房間公告 }else if(type === "roomext"){ updateChatroomInfoBuilder.setRoomExt(content);// 房間信息擴展字段 } RL_YTX.updateChatroomInfo(updateChatroomInfoBuilder,function (e) { console.log(e) callback(); },function (err) { console.error(err); })
var fetchChatroomMembersBuilder = new RL_YTX.FetchChatroomMembersBuilder(IM.roomId); fetchChatroomMembersBuilder.setRoomId(IM.roomId); fetchChatroomMembersBuilder.setType(1);//成員類型 1.全部成員 2.指定成員 fetchChatroomMembersBuilder.setUserId(null);// userId為空時,從頭查詢 fetchChatroomMembersBuilder.setPageSize(20);// 每頁數(shù)量 RL_YTX.fetchChatroomMembers(fetchChatroomMembersBuilder,function (obj) { console.log(obj); IM.addToOnlineList(obj); },function (err) { console.error(err); })
//用于設(shè)置聊天室成員類型,分別為管理員、普通成員用戶 var UpdateChatRoomMemberRoleBuilder = new RL_YTX.UpdateChatRoomMemberRoleBuilder(); UpdateChatRoomMemberRoleBuilder.setRoomId(IM.roomId); UpdateChatRoomMemberRoleBuilder.setUserId(memberId); UpdateChatRoomMemberRoleBuilder.setType(2);//2 管理員 3 普通成員 UpdateChatRoomMemberRoleBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 UpdateChatRoomMemberRoleBuilder.setNotifyExt(memberId +"成為管理員" );// 通知信息擴展字段 RL_YTX.updateChatRoomMemberRole(UpdateChatRoomMemberRoleBuilder,function () { callback(); },function (err) { console.error(err); })
var defriendMemberBuilder = new RL_YTX.DefriendMemberBuilder(); defriendMemberBuilder.setRoomId(IM.roomId);// 房間id defriendMemberBuilder.setUserId(memberId);// 用戶id defriendMemberBuilder.setState(1);//1拉黑 2取消拉黑(默認(rèn)2) defriendMemberBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默認(rèn)2) defriendMemberBuilder.setNotifyExt("因為暗戀女主播被踢出去了");//通知信息擴展字段 RL_YTX.defriendMember(defriendMemberBuilder,function (e) { console.log(e) callback(); },function (err) { console.error(err) })
var forbidChatRoomMemberBuilder = new RL_YTX.ForbidChatRoomMemberBuilder(); forbidChatRoomMemberBuilder.setRoomId(IM.roomId);// 房間id forbidChatRoomMemberBuilder.setUserId(memberId);// 用戶id forbidChatRoomMemberBuilder.setState(1);//1禁言 2取消禁言(默認(rèn)2) forbidChatRoomMemberBuilder.setMuteDuration(time);//單位:分鐘 當(dāng)禁言時,需要禁言時長b forbidChatRoomMemberBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默認(rèn)2) forbidChatRoomMemberBuilder.setNotifyExt("因為暗戀女主播被禁言了");//通知信息擴展字段 RL_YTX.forbidChatRoomMember(forbidChatRoomMemberBuilder,function (e) { console.log(e) callback(); },function (err) { console.error(err) })
var allMuteBuilder = new RL_YTX.AllMuteBuilder(); allMuteBuilder.setRoomId(IM.roomId); allMuteBuilder.setAllMuteMode(2);// 是否全員禁言 1 不是 2 是 allMuteBuilder.setNeedNotify(2);// 是否需要通知, 1 不通知 2 通知 (默認(rèn)2) allMuteBuilder.setNotifyExt("都悄悄地");// 通知信息擴展字段 RL_YTX.AllMuteMode(allMuteBuilder,function (e) { console.log(e) callback },function (err) { console.error(err) });
var kickMemberBuilder = new RL_YTX.KickMemberBuilder(); kickMemberBuilder.setRoomId(IM.roomId); kickMemberBuilder.setUserIds([“111”,”222]); kickMemberBuilder.setNeedNotify(2); kickMemberBuilder.setNotifyExt("違規(guī)"); console.log(kickMemberBuilder); RL_YTX.kickMember(kickMemberBuilder,function (e) { console.log(e); callback(); },function (err) { console.log(err); if(err.code === 620010){ console.error('你沒有權(quán)限'); } })
var exitChatroomBuilder = new RL_YTX.ExitChatroomBuilder(); exitChatroomBuilder.setRoomId(IM.roomId);// 房間id exitChatroomBuilder.setNeedNotify(2);//是否需要通知, 1 不通知 2 通知 (默認(rèn)2) exitChatroomBuilder.setNotifyExt(IM.user_account+ " 退出了聊天室");// 通知信息擴展字段 RL_YTX.exitChatroom(exitChatroomBuilder,function (e) { callback(); },function (err) { console.error(err); }) }
var updateMyChatroomMemberInfoBuilder = new RL_YTX.UpdateMyChatroomMemberInfoBuilder(); updateMyChatroomMemberInfoBuilder.setRoomId(IM.roomId); if(type === "nickname"){ updateMyChatroomMemberInfoBuilder.setNickName(content); //個人昵稱 }else if(type === "infoext"){ updateMyChatroomMemberInfoBuilder.setInfoExt(content);// 個人信息擴展字段 } RL_YTX.updateMyChatroomMemberInfo(updateMyChatroomMemberInfoBuilder,function (e) { console.log(e) callback(); },function (err) { console.error(err); }) }
RL_YTX.onCharRoomEventLinstener(callback); if(obj.type === 1){//有用戶加入 }else if(obj.type === 2){//修改聊天室通知 }else if(obj.type === 3){//設(shè)置角色通知 }else if(obj.type === 4){//有用戶被踢出 }else if(obj.type === 5){//有用戶退出 }else if(obj.type === 6){//全員禁言 }else if(obj.type === 7){//聊天室全員取消禁言 }else if(obj.type === 8){//單人禁言 }else if(obj.type === 9){//成員取消禁言 }else if(obj.type === 10){//拉入黑名單 }else if (obj.type === 11){//成員取消拉黑 }else if(obj.type === 12){//聊天室關(guān)閉 }else if(obj.type === 14){//修改聊天室信息 }
文檔更新時間:2017年9月21日