1. 程式人生 > >在直播APP制作時如何設置直播軟件聊天發言部分可見的功能

在直播APP制作時如何設置直播軟件聊天發言部分可見的功能

gty ring ket 部分 func proc 同時 直播APP 消息發送

在直播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制作時聊天功能得重要介紹,在開發中經常涉及根據用戶的不同分類對收發消息進行不同的處理方式,小編針對此功能就介紹到這,後續還會有更多此類功能介紹,關註本博主,會持續為大家更新開發技巧。
聲明:本篇文章為小編原創文章,轉載請註明出處及作者。

在直播APP制作時如何設置直播軟件聊天發言部分可見的功能