在直播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制作 时聊天功能得重要介绍,在开发中经常涉及根据用户的不同分类对收发消息进行不同的处理方式,小编针对此功能就介绍到这,后续还会有更多此类功能介绍,关注本博主,会持续为大家更新开发技巧。

声明:本篇文章为小编原创文章,转载请注明出处及作者。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69917607/viewspace-2643307/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69917607/viewspace-2643307/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值