在直播APP製作時如何設定直播軟體聊天發言部分可見的功能

雲豹科技官方發表於2019-05-05

在直播 APP製作時聊天功能是直播軟體中的重要功能,在開發中經常涉及根據使用者的不同分類對收發訊息進行不同的處理。 處理方式如下:

1.  在使用者進入房間連結 socket時,根據使用者的屬性進入特定房間

if(socket.usertype == 60){//新建當前房間的超管頻道和場控頻道,用於訊息傳送 
socket.join(data.roomnum+'_60');
}else if(socket.usertype == 40){
socket.join(data.roomnum+'_40');
}


2.  在使用者發訊息時,判斷髮訊息使用者型別,並根據型別向 1個或多個特定分類房間內發訊息(切記不要傳送重複,儘量不要讓每個使用者進入多個特定房間)

clientRedis.hget( "super",socket.uid,function(error,res){
if(error) return;
if(res != null){
var data_str2={
                                                "msg":[
                                                    {
     "_method_":"SystemNot",
                                                        "action":"1",
            "ct":''+dataObj['msg'][0]['ct'],
                                         "msgtype":"4"
                                                    }
                                                ],
                                                "retcode":"000000",
                                                "retmsg":"OK"
                                            };
process_msg(io,socket.roomnum,JSON.stringify(data_str2));
console.log(1);
        }else{   clientRedis.hget("isspeak",socket.roomnum,function(error,res){
if(error) return;
if(res == 1 || socket.usertype == 40 || socket.usertype == 50 ){
clientRedis.hget(socket.roomnum + "shutup",socket.uid,function(error,res){    
if(error) return;
if(res != null){
var time = Date.parse(new Date())/1000;
if((time < parseInt(res))){
var newData  = dataObj;
newData['retcode'] = '409002';           socket.emit('broadcastingListen',[JSON.stringify(newData)]);
}else{//解除禁言
clientRedis.hdel(socket.roomnum + "shutup",socket.uid);           process_msg(io,socket.roomnum,data_str);
console.log(2);
//訊息記錄
//LV-2019-03-25
//clientRedis.h(socket.roomnum + "shutup",socket.uid);
// if(socket.uid != socket.roomnum){
// var timea = Date.parse(new Date());
// console.log(msg);
// clientRedis.hset('msglist_'+socket.stream,timea,JSON.stringify(msg));
// }
}
}else{
var timea = Date.parse(new Date());         process_msg(io,socket.roomnum,data_str);      
console.log(3);
//訊息記錄
//LV-2019-03-25
// if(socket.uid != socket.roomnum){
// console.log(msg);
// clientRedis.hset('msglist_'+socket.stream,timea,JSON.stringify(msg));
// }


3.  在改變使用者狀態時,需要讓使用者退出特定房間

//設定為管理員的加入管理員房間 反之踢出管理員房間
      if(socket.usertype == 50 ){
if(msg.action ==1){
//設為管理
sockets[msg.touid].usertype = 40;
sockets[msg.touid].join(socket.roomnum+"_40");
}else{
//取消管理
sockets[msg.touid].usertype = 30;
var room = socket.roomnum+"_40";
sockets[msg.touid].leave(room); 
}
process_msg(io,socket.roomnum,data_str);
         }


4.  在使用者退出房間時,要同時將使用者的特定房間屬性退出

socket.leave(socket.roomnum); 
socket.leave(socket.roomnum+"_40");
socket.leave(socket.roomnum+"_60");


以上就是在 直播 APP製作 時聊天功能得重要介紹,在開發中經常涉及根據使用者的不同分類對收發訊息進行不同的處理方式,小編針對此功能就介紹到這,後續還會有更多此類功能介紹,關注本博主,會持續為大家更新開發技巧。

宣告:本篇文章為小編原創文章,轉載請註明出處及作者。


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917607/viewspace-2643307/,如需轉載,請註明出處,否則將追究法律責任。

相關文章