游戏服务器---邮件系统

本文详细介绍了邮件系统的设计,包括个人邮件和全服邮件的管理。邮件表和附件表的结构,以及客户端如何通过mail_receiveidx获取新邮件。系统在用户登录时检查并发送新邮件,同时描述了缓存策略和邮件更新机制。此外,还涵盖了全服邮件的处理,以及如何根据sys_mail_receiveidx更新玩家状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1:个人邮件

一个邮件表(msg)

一个附件表(msg_attachment)

邮件中got字段表示客户端有没有拉取这封邮件。。

附件中got字段表示 当前奖励有没有被领取。。。

用户个人信息表中 用一个字段mail_receiveidx记录客户端已经拉取的最后一封邮件的id

客户端登陆后,定时请求邮件,把mail_receiveidx发送给客户端,客户端来拉取邮件时,把mail_receiveidx发送给服务器,由于第一次请求邮件信息时,服务器缓存中并没有当前uid的邮件信息,服务器去数据库检索mailid > mail_receiveidx 的邮件,sql上最好加上限制条数  例如 limit 10。。。。服务器把检索的结果发给客户端,并且把mail_receivedidx 修改成最新的值。。根据检索的结果,如果条数<10  表示数据库中已经没有新的邮件了,此时可以把玩家的邮件信息加入缓存。。如果条数>10  不加入缓存

再次拉取邮件时,就要检查缓存以及比较缓存中的msgid 和 mail_receivedidx ,如果有缓存且id相等就是说明 没有新邮件了,否则的话就把缓存清了 去数据库检索

系统给玩家发邮件时,先存mysql  然后通知玩家,如果玩家在线并且有缓存那就直接发送给玩家,更新msgid,否则的话  清空缓存  直接等客户端来拉

2:全服邮件

全服邮件表sys_msg   跟个人邮件表 类似  可以根据实际需求添加字段  如过期时间等等。。。。

用户个人信息表中 用一个字段sys_mail_receiveidx记录客户端已经存的最后一封全服邮件的id

客户端登陆时,服务器会去检查玩家有没有合格的全服邮件,如果有就向msg表以及 msg_attachment表中插入数据,同时更新sys_mail_receiveidx

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值