微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐