Linux实现远程通信——用户私聊(服务端)

用户私聊

 在创建Json对象的数据后,客户端和服务端就可以依据这个类型的数据进行通信了。我们通过解析Json对象val中的cmd指令,也就是命令,来判断客户端是想要进行什么操作(用户注册?登录?聊天?),从而执行对应的函数操作。

if(cmd == "private_chat"){
        server_private_chat(bev,val);   //执行用户私聊对应的函数
}

 既然用户可以私聊,说明双方已经是好友关系。那么用户私聊就只有两种情况:1、用户不在线。2、用户在线,则发送信息。


 首先是第一种情况,要判断用户在不在线,那么直接判断在线用户链表chatlist->online_user中是否有发送的好友信息,如果没有,那么就说明好友不在线。那么服务端通过Json::Value创建Json对象,对其赋值,然后利用Json::FastWriter封装成string格式的文本信息即可实现Json数据的传输。返回的无格式Json数据如下:

{"cmd":"private_chat_reply","result":"offline"}                      

 然后是第二种情况,如果用户在线,那么就向好友用户发送信息,服务端要做的就是把当前登录者发送的信息转发给好友用户。要转发给好友用户,就需要他的bev,这里我们通过chatlist->info_group_add_user函数,也就是在线用户链表来获取好友的bev,函数具体实现如下:

for(list<Group>::iterator it=group_info->begin(); it!=group_info->end(); it++){
        if(it->name == group_name){
                GroupUser u;
                u.name = user_name;
                it->l->push_back(u);
        }
}

 转发信息后,服务端告诉客户端私聊成功,通过Json::Value创建Json对象,对其赋值,然后利用Json::FastWriter封装成string格式的文本信息即可实现Json数据的传输。返回的无格式Json数据如下:

{"cmd":"private_chat_reply","result":"success"}                      

由于这里没有用到MYSQL数据库,所以就不用断开数据库连接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值