php直播平台源码如何设置聊天相关功能

在php直播平台源码制作时聊天功能是直播软件中的重要功能,在php直播平台源码开发中经常涉及根据用户的不同分类对收发消息进行不同的处理。 处理方式如下:
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");

以上就是在php直播平台源码时聊天功能得重要介绍,在开发中经常涉及根据用户的不同分类对收发消息进行不同的处理方式。
声明:本篇文章为作者 云豹短视频 原创文章,转载请注明出处及作者,本次转载已获授权

上一篇:学习Java绕不过去的--冒泡排序。


下一篇:Vuex2.0+Vue2.0构建备忘录应用实践